node.js – 如何獲取(Express的)sessionID的websocket連線
我正在Express Express執行的同一埠上使用Socket/">WebSockets npm install ws.
我想從剛剛製作並升級到WebSocket的HTTP連線中提取相關聯的“sessionID”.
// start express listening server.listen(conf.server.port, conf.server.host); var WebSocketServer = require('ws').Server , wss = new WebSocketServer({server: server}); wss.on('connection', function(ws) { var sessionID = // how do I get this? ws.on('message', function(message) { console.log('received: %s', message); }); ws.send('something'); });
如何才能做到這一點?
(我目前通過在頁面中傳送sessionID來解決問題,但這是醜陋的.)
>解析cookie
>獲取會話ID
>獲取會話資料
var express = require('express'); var parseCookie = express.cookieParser(); var MemoryStore = express.session.MemoryStore; var store = new MemoryStore(); app.configure(function() { app.use(express.session({ store: store, secret: '123456', key: 'sid' })); }); wss.on('connection', function(ws) { parseCookie(ws.upgradeReq, null, function(err) { var sessionID = ws.upgradeReq.cookies['sid']; store.get(sessionID, function(err, session) { // session }); }); ws.on('message', function(message) { console.log('received: %s', message); }); ws.send('something'); });
http://stackoverflow.com/questions/11541835/how-can-i-get-expresss-sessionid-for-a-websocket-connection