多Socket.io应用程序会导致每个客户端插座连接和断开反复
我的工作与Socket.io一个应用程序的NodeJS,我在使用PM 2单个进程做了一个测试,这是没有错误。然后,我搬到我们的生产环境(我们使用谷歌云计算实例)。
我运行3个应用程序进程和iOS的客户端连接到服务器。顺便说了iOS客户端不保留套接字连接。它不发送断开连接到服务器。但它断开并重新连接到服务器。它不断地发生。
我不知道为什么服务器断开连接客户端。如果您有这方面的任何提示或答案,我将不胜感激你。
回答如下:这可能是因为请求在不同的机器,而不是他们源于一个上结束。
直接从Socket.io Docs: Using Multiple Nodes:
如果您计划分发不同的进程或机器之间的连接负载,你必须确保有一个特定的会话ID相关联的请求连接到它们起源的过程。
你需要做什么:
- 启用session affinity,a.k.a粘性会话。
- 如果你想与房/命名空间来工作,你还需要使用一个集中的内存存储跟踪的命名空间的信息,如Redis/Redis Adapter。
但我建议你阅读文档的一块,我贴了,事情可能因为我已经实现了这样的事情是最后一次修改一下。
多Socket.io应用程序会导致每个客户端插座连接和断开反复
我的工作与Socket.io一个应用程序的NodeJS,我在使用PM 2单个进程做了一个测试,这是没有错误。然后,我搬到我们的生产环境(我们使用谷歌云计算实例)。
我运行3个应用程序进程和iOS的客户端连接到服务器。顺便说了iOS客户端不保留套接字连接。它不发送断开连接到服务器。但它断开并重新连接到服务器。它不断地发生。
我不知道为什么服务器断开连接客户端。如果您有这方面的任何提示或答案,我将不胜感激你。
回答如下:这可能是因为请求在不同的机器,而不是他们源于一个上结束。
直接从Socket.io Docs: Using Multiple Nodes:
如果您计划分发不同的进程或机器之间的连接负载,你必须确保有一个特定的会话ID相关联的请求连接到它们起源的过程。
你需要做什么:
- 启用session affinity,a.k.a粘性会话。
- 如果你想与房/命名空间来工作,你还需要使用一个集中的内存存储跟踪的命名空间的信息,如Redis/Redis Adapter。
但我建议你阅读文档的一块,我贴了,事情可能因为我已经实现了这样的事情是最后一次修改一下。