NodeJS 升级到WebSocket时如何访问Express风格的请求对象?

qkf9rpyu  于 2023-05-22  发布在  Node.js
关注(0)|答案(1)|浏览(112)

使用Express + ws(WebSocket)库。
“App”使用一些Express中间件将当前用户添加到请求对象中,但WS获得的是一个Node请求对象,而没有我需要的信息。
如何在升级连接时将此数据传递到WebSocket?

const server = http.createServer(app); // app is using the express middleware to add info I need

const wss: WebSocket.Server = new WebSocketService(clients, { noServer: true }).wss;

server.on('upgrade', (request, socket: any, head) => {
    wss.handleUpgrade(request, socket, head, (ws: WebSocket) => {
        wss.emit('connection', ws, request);
    });
});

server.listen(3000, () => {
    console.log('Listening on port 3000');
});
klh5stk1

klh5stk11#

这取决于你在什么基础上建立用户。但是如果您使用cookie来识别/创建用户,好消息是,您可以在请求对象的upgrade钩子中使用cookie。
有关详细信息,请参阅讨论的Cookie解决方案:https://stackoverflow.com/a/59314360/4774136

相关问题