1

我们的NodeJS(使用套接字和 HTTP)项目正在被共享相同公共 IP 地址的用户(所有人都在同一个办公室、同一个网络工作)使用。我已经放置了一个粘性会话实现,它根据用户的公共 IP 地址生成一个哈希,然后为它分配一个节点工作者。这种粘性是socket.io工作所必需的。由于所有用户都共享相同的公共 IP 地址,因此哈希值始终相同,因此仅使用一名工作人员。所有其他工人都没有被使用:-(

由于我使用net.createServer带有选项的非常低级别的 NodeJS 的 API pauseOnConnect,我无法获取任何其他信息,例如标头、cookie 来为每个用户创建唯一的哈希。

问题:

  • 真的需要这种粘性吗?我socket.io-redis用来广播消息。不确定此适配器是否会帮助我处理套接字连接,并且不需要管理明确的粘性。我试过这个,但似乎没有工作。

  • 是否可以从发出的连接对象中读取标头/cookie net.createServer?我认为这是不可能的,因为它在这个级别上没有任何 HTTP 实现。

  • 是否可以利用http.createServerAPI 并将请求对象从主进程传递给工作人员。通过这种方式,我可以读取标题/cookie 并生成唯一的哈希。

  • 最坏的情况,是否可以在代理级别(使用nginx)覆盖客户端的 IP 地址并为每个用户设置一些虚拟的唯一 IP 地址。

4

0 回答 0