当前设置: 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。
谢谢你, 莱恩
答案 0 :(得分:0)
您是否尝试过socket.io-redis模块?
通过使用socket.io-redis适配器运行socket.io,您可以运行 不同进程或服务器中的多个socket.io实例 所有人都可以相互广播和发送事件。
如果需要从nonsocket.io向socket.io实例发出事件 过程中,您应该使用socket.io-emitter。