基于这个答案的问题:https://stackoverflow.com/a/18650183/4478897
我试图找到这个解决方案,但似乎没有任何东西可以按照我需要的方式工作.
集群expressjs,socket.io我们可以使用redis共享会话并io在ioworld(io.sockets.on('connection',...)内发送消息.问题是我们是想socket.join/leave在expressjs世界里发送消息(或使用简单的)(route.get/post).
如果我们不使用集群,我们可以atach客户socket对象明确request对象(或简单地export在io对象),然后在任何GET/POST路线随时使用它.
在另一方面,如果我们的集群和使用所提到的方法来获取socket里面的对象expressjs世界,有时socket对象,因为未定义socket此客户端对象在其他初始化worker.
一些示例流程:
worker 1处理此请求.socket.io.Worker 2处理此连接.worker 1或worker X处理此请求.在这种情况下,当客户端执行POST时,只worker 2知道socket该客户端的对象.所以这将得到一个未定义的socket对象.
那么,问题是:
我们如何socket从任何客户端对象中获取worker它以在expressjs request对象上重用它. …