如何获取(Express 的)sessionID 用于 websocket 连接 [英] How can I get (Express's) sessionID for a websocket connection

查看:40
本文介绍了如何获取(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.)

推荐答案

  1. 解析cookie
  2. 获取会话 ID
  3. 获取会话数据

  1. Parse cookie
  2. Get session id
  3. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆