Socket.io Express 3 次会议

Posted

技术标签:

【中文标题】Socket.io Express 3 次会议【英文标题】:Socket.io Express 3 sessions 【发布时间】:2012-06-03 03:54:22 【问题描述】:

有没有在 Express 3.0 中使用 Socket.io 会话的好方法?一种以安全方式获取客户会话 ID 的方法?这样我就可以向特定于他们帐户的成员发送通知并在成员之间进行私人聊天?

我在 Express 3.0 中使用 mysql 存储

【问题讨论】:

对于 express 4.x & socket.io 1.x ***.com/a/25618636/153718 【参考方案1】:

我写了一个小模块来抽象它,下面是它的用法。它是使用 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”以外的名称)。

【讨论】:

【参考方案2】:

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

npm install express.io

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

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

【讨论】:

你真的应该提到你写过它。【参考方案3】:

我做了一些稍微不同的事情来让它工作。我阅读了很多帖子 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 的问题得到解决。

【讨论】:

以上是关于Socket.io Express 3 次会议的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Express、AngularJS、Socket.io 广播和获取通知?

Phonegap Socket.io 聊天

如何在 express 和 socket.io 中使用护照?

如何使用 Socket.IO 最好地构建 Express V4.11+ 项目?

Socket.IO 错误“listen()”方法在迁移到 Express 3.0 后需要一个“http.Server”实例

Express.js 'socket.io/socket.io.js 404'