Socket.io Express 3会话

时间:2012-05-28 21:09:07

标签: javascript node.js express socket.io

有没有一种在Express 3.0中使用Socket.io会话的好方法?获得客户的一种方式'会话ID安全吗?这样我就可以向会员特定的会员发送通知,并从会员到会员进行私聊?

我在Express 3.0中使用MySQL商店

3 个答案:

答案 0 :(得分:9)

我写了一个小模块来抽象它,这是它的用法看起来如何。它是使用express 3,socket.io 0.9.10和来自connect 2.4.5的(默认)MemoryStore编写和测试的。它应该可以与其他兼容的商店一起使用。

var SessionSockets = require('session.socket.io')
  , sessionSockets = new SessionSockets(io, sessionStore, cookieParser);

sessionSockets.on('connection', function (err, socket, session) {
  //your regular socket.io code goes here
});

有关其工作原理的详细信息,请参阅https://github.com/wcamarao/session.socket.io

您可能需要注意README的部分,它说明了如何将它与您自己的会话存储密钥一起使用(我假设您的mysql存储使用的名称不是默认的'connect.sid')。

答案 1 :(得分:1)

您应该查看express.io,这是一个非常简单的用于express和socket.io集成的微框架。它自动处理express和socket.io会话。

npm install express.io

在此处查看会话支持示例:

https://github.com/techpines/express.io/tree/master/examples#sessions

答案 2 :(得分:0)

我做了一些稍微不同的工作。我阅读了很多帖子on nodester github并附带了以下解决方案......

替换:

http.createServer(app).listen(app.get('port'), function(){
      console.log("Express server listening on port " + app.get('port'));
    });

使用:

var server = http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

var io = require('socket.io').listen(server);

我的计划是继续使用此解决方法,直到解决了express3和socket.io的问题。