使用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');
});
1条答案
按热度按时间klh5stk11#
这取决于你在什么基础上建立用户。但是如果您使用cookie来识别/创建用户,好消息是,您可以在请求对象的
upgrade
钩子中使用cookie。有关详细信息,请参阅讨论的Cookie解决方案:https://stackoverflow.com/a/59314360/4774136