如何获取(Express 的)sessionID 用于 websocket 连接 [英] How can I get (Express's) sessionID for a websocket connection
本文介绍了如何获取(Express 的)sessionID 用于 websocket 连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 Express 运行的同一端口上使用 WebSockets npm install ws
.
I'm using WebSockets npm install ws
on the same port as Express is running.
我想从刚刚建立并升级到 WebSocket 的 HTTP 连接中获取关联的sessionID".
I'd like to pick up the associated 'sessionID' from the HTTP connection which had just been made and upgraded to a WebSocket.
// 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 来解决这个问题,但这很难看.)
(I currently work around the issue by sending the sessionID in the page, but this is ugly.)
推荐答案
- 解析cookie
- 获取会话 ID
获取会话数据
- Parse cookie
- Get session id
Get session data
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');
});
这篇关于如何获取(Express 的)sessionID 用于 websocket 连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文