Node.js 套接字io已连接,但服务器端未发生连接事件(GKE)
我在GKE中部署了一个基于Socket.io的应用程序。我已经使用Redis适配器来处理多个吊舱。已在入口设置中设置Cookie关联 我使用动态名称空间。我只在GKE上使用1个吊舱。当我从1个pod缩放到0个pod,然后再缩放到1个pod时,重复执行,有时socket.io工作,有时不工作。当它不起作用时,以下是我观察到的非常奇怪的行为:Node.js 套接字io已连接,但服务器端未发生连接事件(GKE),node.js,socket.io,google-kubernetes-engine,socket.io-redis,Node.js,Socket.io,Google Kubernetes Engine,Socket.io Redis,我在GKE中部署了一个基于Socket.io的应用程序。我已经使用Redis适配器来处理多个吊舱。已在入口设置中设置Cookie关联 我使用动态名称空间。我只在GKE上使用1个吊舱。当我从1个pod缩放到0个pod,然后再缩放到1个pod时,重复执行,有时socket.io工作,有时不工作。当它不起作用时,以下是我观察到的非常奇怪的行为: 服务器端的On connection事件未激发,事件已通过套接字连接。我知道插座已经连接了,因为我打印了所有的插座 我怀疑Redis适配器?有人见过这个吗
- 服务器端的On connection事件未激发,事件已通过套接字连接。我知道插座已经连接了,因为我打印了所有的插座
谢谢 将此答案发布为社区wiki,以强调问题已解决的事实 请随意编辑和扩展
如评论中所述: 谢谢,我找到问题了。这是因为动态名称空间。问题是,当您使用(nsp)的io时,如果尚未创建nsp,则将使用连接处理程序上的
取消定义来创建nsp。因此,未设置连接处理程序上的动态命名空间
额外资源:
您好,请添加您的问题的副本以便复制?另外,您能告诉我您所说的:socket.io
有时有效,有时无效吗?谢谢,我发现了这个问题。这是因为动态名称空间。问题是,当您使用(nsp)的io时,如果尚未创建nsp,则将在连接处理程序上使用取消定义创建nsp。因此,我们的连接处理程序上的动态namspace没有设置。我很高兴您找到了解决问题的方法。由于你是它的创建者,请考虑创建一个答案,解释为更好的社区知名度,并指出你已经设法解决它。