我在 Express 运行的同一端口上使用 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
- 获取 session ID
获取 session 数据
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'); });
关于node.js - 如何获取 websocket 连接的(Express 的)sessionID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541835/