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

时间:2015-02-28 01:57:19

标签: javascript node.js express socket.io

我有一个应用程序启动并运行。用户在登录后要求他们在以后回来时会保持记录状态。

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

我在最新版本中同时拥有Express和Socket.io。

我的应用程序使用Socket.io进行身份验证,因此我需要一种方法来更新来自Socket.io回调的cookie。我花了4小时搜索并尝试不同的解决方案。有人可以给我一个暗示吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用 coockie 模块来解决传递的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);

});
// ....