Chrome WebSocket连接延迟

4
我在使用Websockets和Chrome(版本22.0.1229.79m)时遇到了一个奇怪的问题(我还没有为其他浏览器编写身份验证,因此无法测试它们)。似乎如果我重新加载三次Chrome,连接到我的websocket服务器将会有很大的延迟。服务器并没有延迟连接,我通过在Chrome延迟时使用另一台PC连接到它进行了测试,连接完美地完成。
有没有办法解决这个问题?当我在切换服务器接收数据时,这是一个问题。它会停止并延迟。这对用户体验非常不好。我认为这严格关系到Chrome浏览器没有关闭socket……

我也曾在一些网络配置上遇到过这个问题。用户连接到 WebSockets 服务器需要花费大约 10-15 秒钟的时间,在 Firefox 中则几乎是瞬间完成的。 - starbeamrainbowlabs
你安装了任何扩展程序吗?我刚在Chrome上遇到了一个问题,使用WebSockets连接需要大约1分钟的时间,但在Firefox上没有延迟。我一直很烦恼。后来我来到这里,然后意识到我安装了一些扩展程序。(禁用“JetBrains Chrome Extension 0.3.11”有所帮助。) - Jonas N
我曾经遇到过同样的问题。从Chrome到127.0.0.1:8081的ws连接需要超过3秒钟;我的服务器是一个自己编写的C++ WebSocket服务器,因此当accept()调用产生3+秒的延迟时,我可以看到精确的延迟时间。此外,从控制台直接telnet到ws服务器(localhost:8081)会立即产生预期的结果。所以浏览器肯定在做某些事情。后来发现,我安装了一些Chrome扩展程序(广告拦截器、Skype等)。禁用它们中的所有扩展程序显著降低了延迟。 - Neelabh Mam
1个回答

3

我也在Chrome浏览器中的同一个选项卡内短时间创建多个WebSocket连接时遇到了这种延迟。我认为这是为了解决WebSockets可能存在的安全问题,该问题允许浏览器被劫持以执行网络内部的端口扫描。通过限制在给定时间内可以发生的WebSocket连接数量,您大大限制了将浏览器用作远程端口扫描器的效用。此外,onclose和onerror返回的信息量出于同样的原因也有意地受到限制。


Chrome是唯一这样做的吗?Firefox遵循自己的WebSocket协议,也许这就是为什么它似乎不影响Firefox浏览器的原因。我想我必须将我的目标受众转向Firefox,并远离使用Chrome的用户...(因为它会变慢并且连接会延迟) - User
每页您要建立多少个连接?Firefox和Chrome都遵循W3C规范,限制错误和关闭事件所暴露的信息量。我怀疑Firefox将会加强对同时建立连接数量的限制,特别是如果有人在Firefox上利用这个问题。 - kanaka
如果您像在另一条评论中提到的那样遇到了数据传输缓慢的问题,那么这可能不是Chrome特定的问题。我没有遇到这样的问题。只有当我尝试在短时间内创建多个连接时,才会出现延迟连接的情况。 - kanaka
好的,我正在连接到一个代理服务器,该服务器获取服务器详细信息(哪个服务器有用户的空间)。一旦它返回服务器详细信息,该连接就会关闭。然后我连接到大厅服务器,然后当/如果他们创建/加入游戏时,他们会再次连接到游戏服务器。在短时间内进行了3个或更多的连接。一旦连接到大厅,除非他们注销,否则他们不会断开连接。 - User

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接