Socket.io问题处理HA中间件的会话问题

时间:2018-03-15 20:40:15

标签: node.js socket.io

当前设置: Node.js - 8.3.4 Socket.io - 2.0.4 快递 - 4.15.4

我最近遇到了运行2个允许socket.io连接的中间件服务并发实例的问题。对于流量路由,我们公司使用F5和treafik的组合,并且我被告知在新请求时无法保证与同一服务器的连接。因此,当前端第一次连接到中间件时,我从套接字连接获取数据。但是,一次刷新可能会导致与socket.io相关的多个会话ID错误。这是因为我很可能被定向到其他服务器。我一直在寻找一个解决方案几个小时,这个:https://www.npmjs.com/package/express-socket.io-session似乎是一个很好的可能性。

我觉得这是很多人不得不面对的事情。谁能告诉我他们为解决这个问题所做的一切?我们目前使用Redis服务器来存储用户会话数据(与auth相关),我以为我们可以使用它来存储来自socket.io的会话ID,然后更改套接字连接过程以查看是否存在会话ID。

谢谢你, 莱恩

1 个答案:

答案 0 :(得分:0)

您是否尝试过socket.io-redis模块?

  

通过使用socket.io-redis适配器运行socket.io,您可以运行   不同进程或服务器中的多个socket.io实例   所有人都可以相互广播和发送事件。

     

如果需要从nonsocket.io向socket.io实例发出事件   过程中,您应该使用socket.io-emitter

这也有助于: https://stackoverflow.com/a/18650183/7526159