node.js搭建基礎聊天室,part1

我的畢設打算做一個實時聊天這樣一個系統(tǒng),找了下相關的教程和思路,接下來會嘗試使用express+socket.io搭建一個簡單的聊天室,這里暫時不使用數(shù)據庫,使用cookie來存儲相關數(shù)據。

參考教程:https://github.com/nswbmw/N-chat,
有關api參考官方文檔,
關于res.cookie參考本篇博文:https://segmentfault.com/a/1190000004139342?_ea=504710

今天做到第一部分,socket.io基礎和登陸功能實現(xiàn)

IDE:vscode
express版本:3.3.1
socket.io版本:0.9.7

part1 一個基礎的socket.io實例演示

 //#client

var socket = io.connect('http:/localhost');

socket.on('news',function  (data) {
    console.log(data);
    socket.emit('my other event',{my : 'data'});
})

//#server

var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);


server.listen(80);

app.get('/',function  (req,res) {
    res.sendfile(__dirname+'/index.html');
});

io.socket.on('connection',function  (socket) {
    socket.emit('news',{hello:'world'});
    socket.on('my other event',function  (data) {
        console.log(data);
    })
})

socket.io的核心方法其實就是emit和on,然后通過事件驅動這樣的方式來完成對流對象的讀寫等操作,具體的api可查閱相關文檔。

part2 登陸功能實現(xiàn),這里插一張流程圖,看的會比較清晰

登陸功能

ok,接下來具體代碼

'use strict';

var express = require("express");
var http = require('http');
var path = require('path');

var app = express();

app.set('port',process.env.PORT||3000);
app.set('views',__dirname + "/views");
app.use(express.bodyParser());
app.use(express.cookieParser());

var users = {};//存儲在線用戶列表的對象

app.get('/',function(req,res){
    if(req.cookies.user === null){
        res.redirect('/signin');
    }else{
        res.sendfile('views/index.html');
    }
});

app.get('/signin',function(req,res){
        res.sendfile('views/signin.html');
});

app.post('/signin',function(req,res){
        if (users[req.body.name]) {
            res.redirect('/signin');
        } else {
            res.cookie("user",req.body.name,{maxAge: 1000*60*60*24*30});
        res.redirect('/');
    }
})

以上,待續(xù)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,802評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,761評論 11 349
  • 謝謝你啊,你記住我的話,積德行善,路會越走越寬。祝你健康長壽。―來自一個老人的祝福謝謝您,舉手之勞,我很開心 幫助...
    晶晶_de96閱讀 344評論 0 0
  • ——晏幾道:欲寫彩箋書別怨,淚痕早已先書滿。 若不是情深緣淺,又怎會相逢恨晚?若不是忘不了你當年寫滿愁苦的臉,又怎...
    我本花前客閱讀 343評論 0 0

友情鏈接更多精彩內容