我在服务器上有一个专用于套接字的Node/Express应用程序,在客户端上它是Angular 1.5。使用相同的架构(例如单独的套接字服务器)在http上本地运行代码,一切都运行得非常好。
当我在本地运行代码时,它创建了一个连接,并通过xhr进行了很少的轮询。在采用https的cloudflare上,它会进行大量轮询,不断重新连接,并且似乎不是所有消息都会到达web客户端
消息到达cloudflare,然后将其重定向到运行haproxy的负载平衡器,后者将请求路由到另一台计算机上的docker实例中运行的应用程序。
经过大量调查,我发现问题出在haproxy的配置上。我需要改变套接字路由的超时。
这与cloudflare上的港口未开放无关。
以下链接帮助了我http://blog.haproxy.com/2012/11/07/websockets-load-balancing-with-haproxy/
您的问题很可能是由于 cloudflare 仅允许流量流向一组有限的端口而发生的。为您的服务器尝试以下链接中列出的端口之一,然后尝试连接到它。
https://support.cloudflare.com/hc/en-us/articles/200169156-Which-ports-will-Cloudflare-work-with-
问题内容: 我想一个简单的聊天应用程序在这里与socket.io和node.js中 每次重新启动node.js服务器时,socket.io都会自动重新连接,并以某种方式创建与服务器的另一个连接,即客户端现在两次收到相同的聊天消息。我该如何解决? 问题答案: 默认情况下,在disconnect socket.io上重新连接丢失的连接,从而重新运行事件。因此,每次重新连接时,您都会添加一个事件监听器来
问题内容: 在生产中,我有一个使用连接局部变量保存游戏状态的游戏。但是,我注意到,如果我在连接上闲置了一段时间,它将断开连接并重新连接,这将丢失当前状态。在本地主机上进行测试时,我从未注意到此行为。这是套接字连接的规范行为,还是导致连接断开的其他原因。 如果是正常行为,通常如何处理?是否应该将连接值全局存储,以便用户断开/重新连接时可以恢复连接值? 问题答案: 您的问题与套接字超时有关。如果某个套
问题内容: 调用一次后如何重新连接到套接字io ? 这是代码 如果我这样做,它会起作用。如果我这样做,它将断开连接。但是,如果我尝试使用重新连接,则连接不再起作用。我如何才能建立连接? 问题答案: 好吧,您可以在这里选择… 首次初始化套接字值时,应使用, 下次(调用一次断开连接后),您应使用再次连接。 所以你的应该是这样的
是否可以重用socket.id或多次使用它? 假设一个用户在不同的浏览器选项卡中查看同一站点的多个页面。我想使用一个socket.id,socket来处理它们。 如果用户收到通知,它应该在所有选项卡上弹出一个单一的socket.emit。
当用户关闭选项卡或重新加载页面时,disconnect事件应该会触发,但当通过Nginx和CloudFlare传递连接时,则不会触发。提前感谢您的帮助! 更新:似乎在重新加载/关闭断开连接事件后的几秒钟内最终注册。
问题内容: 如标题所述,我尝试将socket.io 1.0.4与express 4.2一起使用,并且所有请求都返回404。 以下是我的文件: ./bin/www: ./app.js: 问题答案: 我在文件上摆弄了很多东西,然后开始工作,这是我如何开始工作的: ./bin/www: 需要保留require app.js ,否则将无法正常工作。 ./app.js: 所有这一切都对 WWW 放在这里,最