如何使用Socket.io和Express处理会话

How to handle sessions with Socket.io and Express?

本文关键字:Express 处理 会话 io 何使用 Socket      更新时间:2024-06-24

我有一个正在运行的应用程序。用户要求在登录后,稍后返回时将保持登录状态。

我知道我需要以某种方式在客户端存储会话数据,例如cookie。我试过这个https://stackoverflow.com/a/25618636/2440515但它不起作用。这都不是https://www.npmjs.com/package/socket.io-handshake

我有Express和Socket.io的最新版本。

我的应用程序使用Socket.io进行身份验证,因此我需要一种从Socket.i0回调更新cookie的方法。在过去的4小时里,我一直在寻找并尝试不同的解决方案。有人能给我一个提示吗?

谢谢!

您可以使用cookie模块来解析传递的cookie:

$ npm install cookie

打开代码:

//...
var cookie = require('cookie');
//...
io.use(function (socket, next) {
   var cookies = cookie.parse(socket.request.headers.cookie);
   var my_secret = cookies.my_secret || null;
   if (!my_secret) {
       return next(new Error('No cookie set'));
   }
   validateMySecretAsync(my_secret, next);
});
// ....