当前位置: 首页 > 面试题库 >

如何获取Websocket连接的(Express)会话ID

巫欣荣
2023-03-14
问题内容

我在npm install ws与Express运行相同的端口上使用WebSockets 。

我想从刚刚建立并升级到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解决此问题,但这很丑陋。)


问题答案:
  1. 解析Cookie
  2. 获取会话ID
  3. 获取会话数据
        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');
    });


 类似资料:
  • 问题内容: 我想从hibernate会话中获取jdbc连接。hibernate会话中有方法,即session.connection();。但已被弃用。我知道这仍然有效,但是我不想使用已弃用的方法,因为我确定他们必须为此提供一些替代方法?在http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html上,连接方法api表示

  • 我正在尝试制作一个Minecraft客户端,但我不知道如何获取会话ID来启动游戏。我在google上搜索了一下,但无论如何都找不到从命令行启动Minecraft的答案——用户名和密码作为前缀不起作用。

  • 问题内容: 如何获取烧瓶上的复选框是否已选中我正在使用Flask开发服务器环境使用Flask,Gevent和Web套接字进行项目。我用过。这里 如何获得每个连接的唯一会话ID? 我想将其存储在数据库中,并在客户端断开连接后将其删除。 如何获得活动连接总数 问题答案: 没有会话ID。 Flask中的会话只是Cookie的包装。你保存在上面的内容经过数字签名,并以cookie的形式发送给客户端。当你发

  • 在发布这个问题之前,我谷歌了很多这个问题,并且在网络Socket@ServerEndpoint中从HttpServletRequest访问Http会话是我能找到的最好的问题/答案之一,但它似乎不能解决我的问题。 我可以通过这种方式从websocket访问HttpSession,但是我无法访问与普通HTTP请求相同的CDI会话bean实例。 我也尝试在会话中存储Weld实例,并尝试在WebSocke

  • 嗨,我正试图通过ssh隧道连接到服务器上的数据库,但我甚至无法连接Jsch会话。我试图在GWT中作为我的后端代码的一部分来做这件事。这是服务器端代码的实现部分。我对服务器一般不是那么熟悉。通常在端子I类型中: ssh-x username@xxxx.xxx.edu 然后系统提示我输入密码,我输入密码,然后我就进入了。 所以在java中我的代码如下: 我已经双重检查了用户名、密码和主机字符串,它们都

  • 问题内容: 是否可以在不关闭整个服务器的情况下终止服务器的Websocket连接?如果是这样,我该如何实现呢? 注意:我使用NodeJS作为后端和’ws’websocket模块。 问题答案: 如果要踢所有客户端而不关闭服务器,则可以执行以下操作: 如果您要特别寻找一个,也可以进行过滤。如果您要踢客户端作为连接逻辑的一部分(即,它发送错误的数据等),则可以执行以下操作: 和一个基本的客户 你会得到: