socket.io session 應用
阿新 • • 發佈:2018-11-05
服務端:
var http = require("http"); var util = require("util"); var fs = require("fs"); var path = require("path"); var express = require("express"); var io = require("socket.io"); var SessionSockets = require('session.socket.io'); var secret = "my secret",key = "connect.id"; var cookieParser = express.cookieParser(secret); var sessionStore = new express.session.MemoryStore({ reapInterval:20*60*1000 }); var app = express(); app.use(cookieParser); app.use(express.bodyParser()); app.use(express.session({secret: secret,store : sessionStore, key:key })); app.use(app.router); app.use(express.methodOverride()); app.get("/:uid",function(req,res){ var session = req.session; var uid = req.param("uid"); console.log("uid:",uid); session.uid = uid; process.nextTick(function(){ session.save(); }); fs.readFile(path.join(__dirname,"socket.html"),"utf8",function(err,data){ if (err) { res.end(err); }else{ res.end(data); } }); }); var server = http.createServer(app); var socket = io.listen(server); var sessionSockets = new SessionSockets(socket, sessionStore, cookieParser,key); sessionSockets.on("connection",function(err,client,session){ console.log("current session : %s",util.inspect(session)); }); server.listen(3000);
客戶端:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>socket.io</title> <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <script src="https://cdn.socket.io/socket.io-1.0.6.js" type="text/javascript"></script> </head> <body> <ul id="message"></ul> <script type="text/javascript"> var room , socket; var message = $("#message"); socket = new io.connect("http://localhost:3000/"); socket.on("connect",function(){ var s = this; message.append("<li>socket is connected.</li>"); }); socket.connect(); </script> <img src="http://3.web.qstatic.com/webqqpic/style/wallpaper/blue_glow.jpg" style="position:absolute; top:0;left:0; height:100%;width:100%; z-index:-10;" /> </body> </html>
輸出: