升级到websocket时如何访问express风格的请求对象?



使用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');
});

这取决于您建立用户的基础。但是,如果您使用cookie来标识/创建用户,好消息是,您在请求对象的upgrade钩子中有可用的cookie。

有关更多信息,请参阅讨论的cookie解决方案:https://stackoverflow.com/a/59314360/4774136

最新更新