我的畢設打算做一個實時聊天這樣一個系統(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ù)