node.js - socket.io 确保客户端重新连接时的状态

标签 node.js sockets haproxy socket.io-1.0 session.socket.io

我目前正在使用socket.io进行一个项目,我不确定是否完全理解重新连接的机制。

由于客户端可能会发生断开连接,我想知道如何维护服务器上套接字的状态。我已经知道 socket.io-client 会尝试自动重新连接,但我想知道是否可以确保服务器端套接字的状态。

我正在考虑基于 cookie 的 session ,例如 Express,但我再次不确定我是否采取了好的方法。我应该考虑其他解决方案吗?

郑重声明,我使用基于 cookie 的粘性 session 机制成功配置了 HAProxy。是否可以将此机制与 socket.io 服务器上的 cookie session 混合使用?

谢谢

威廉

最佳答案

我认为基于 cookie 的 session 是您的最佳选择。查看session.socket.io模块。看起来它是专门为此而构建的。

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

sessionSockets.on('connection', function (err, socket, session) {

  //your regular socket.io code goes here 
  //and you can still use your io object

  session.foo = 'bar';
  //at this point the value is not yet saved into the session 

  session.save();
  //now you can read session.foo from your express routes or connect middlewares

});

或者,您可以像您提到的那样使用 express 自己实现 session 。我不知道有什么简单的方法可以与 HAProxy 集成。

关于node.js - socket.io 确保客户端重新连接时的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245368/

相关文章:

javascript - 切换到基于 promise 的数据库,现在我的登录完全损坏了

javascript - 尝试连接 MongoDB Atlas 时如何修复密码错误?

c++ - 什么可能导致非阻塞套接字在 `recv` 上阻塞?

node.js - OpenShift + HAProxy session 过多

nginx - 如何在 CoreOS 中负载均衡服务?

node.js - HTTP 范围 header Openshift 可扩展应用程序

php - 执行 Javascript 服务器端

mysql - 如何使用nodejs将本地MySQL数据库部署到Heroku

C 套接字 - 并非所有套接字都在 select() 中接收

c++ - Zlib C++ boost 套接字数据