Chrome浏览器正在加载长轮询,并且加载指示灯不停止。NodeJS&Socket.io:Chrome浏览器未加载WebSockets
为什么Chrome不使用WebSockets,以及如何防止加载指示器在使用长轮询时旋转?
我使用的是最新的socket.io和V2.5的NodeJS
-
我第一次连接时,它使用的WebSocket,但断开马上与XHR轮询重新连接。
Chrome浏览器正在加载长轮询,并且加载指示灯不停止。NodeJS&Socket.io:Chrome浏览器未加载WebSockets
为什么Chrome不使用WebSockets,以及如何防止加载指示器在使用长轮询时旋转?
我使用的是最新的socket.io和V2.5的NodeJS
-
我第一次连接时,它使用的WebSocket,但断开马上与XHR轮询重新连接。
我有类似的问题,我发现有一个socketio cookie重写传输方法为“xhr-polling”。我不知道饼干如何到达那里,但删除它却有窍门。
这是对查找cookie的行的引用。 https://github.com/LearnBoost/Socket.IO/blob/master/socket.io.js#L1023
我找到了cookie并将其删除。它仍然不起作用:\ – 2010-12-16 23:18:27
我找到了cookie,将它删除了,它为我解决了这个问题。谢谢! – 2010-12-29 05:44:29
删除cookie解决了这个问题,也是我期待已久的问题,为什么地狱websocket从来没有工作,即使在我最新的铬30。非常感谢这个答案。 +1 – 2013-10-30 10:48:43
我使用的是Chrome 8并且WebSockets显示工作正常。
如果您使用的是socket.io,则应该在长轮询(或永远iframe)之前回退到FlashSockets甚至xhr-multipart。在服务器和客户端上初始化socket.io时检查您的传输选项。
我在webfaction上使用了两个不同的子域 - 我能想到的唯一的事情是它回退到轮询,因为它认为它的跨域?可能与webfaction有关。 – 2010-12-15 18:31:33
尝试设置传输强制不轮询的特定传输。 – 2010-12-16 14:04:24
我试着在客户端的选项中设置它,它仍然与xhr-polling连接。有没有办法强制它在服务器上? – 2010-12-16 23:09:41
看来socket.io.js有控制这个的选项。
我相信,如果 'tryTransportsOnConnectTimeout' 设置为 '真',那么socket.io将通过所有的传输机制迭代连接并使用成功的第一个。
如果'rememberTransport'设置为'true',则成功的传输将存储在cookie中。
在我的应用程序中,我实现了断开连接时重新连接的逻辑。我发现我必须将上述两个选项都设置为'false',以防止回落到不希望的交通工具上。发生这个问题是因为在断开连接之后,服务器可能在任何时候都可用(而客户端尝试长时间轮询而不是websockets)。如果发生这种情况,cookie将被设置,并且后续连接将继续使用不需要的传输。
告诉我你的Chrome版本,我告诉你答案:) – 2010-12-12 10:21:55
Chrome 8 - http://cl.ly/3din – 2010-12-15 18:21:56
万分感谢发布这个问题!当然还有+1 :) – 2013-10-30 10:47:31