Javascript WebSocket的缺点

Javascript WebSocket的缺点,javascript,web-services,websocket,Javascript,Web Services,Websocket,我想知道使用WebSocket有哪些限制 Websockets就是这样。。强大的我无法想象它是没有缺点的 比如说,可以同时连接到服务器的用户数量是多少(如果我正在创建一个游戏,并且用户将通过WebSocket连接到游戏,那么什么会限制任何时候能够连接的用户数量?) 另外,每增加一个连接,连接的质量(速度和类似的东西)就会降低,这是真的吗?从我读到的,这似乎与我读到的内容有关,通常不建议使用它,因为它会在服务器上创建大量连接 如果必须选择的话,我可能总是会开发一种客户端轮询机制。当然,优点和缺点取

我想知道使用WebSocket有哪些限制

Websockets就是这样。。强大的我无法想象它是没有缺点的

比如说,可以同时连接到服务器的用户数量是多少(如果我正在创建一个游戏,并且用户将通过WebSocket连接到游戏,那么什么会限制任何时候能够连接的用户数量?)


另外,每增加一个连接,连接的质量(速度和类似的东西)就会降低,这是真的吗?

从我读到的,这似乎与我读到的内容有关,通常不建议使用它,因为它会在服务器上创建大量连接


如果必须选择的话,我可能总是会开发一种客户端轮询机制。

当然,优点和缺点取决于具体的用例,但我将尝试指出WebSocket和HTTP之间的一些区别

WebSocket比HTTP更复杂。您可以与telnet客户端建立HTTP连接,但可能无法对WS进行同样的操作。即使忽略了握手要求(包括使用SHA1哈希函数),也无法正确屏蔽和帧化要发送的数据,服务器将关闭连接

正如Uwe所说,WebSocket连接比HTTP连接更持久。如果您只希望每30分钟接收一次更新,那么您将希望使用HTTP。如果您希望每秒接收更新,WebSocket可能是更好的选择,因为建立HTTP连接需要很多时间

要建立HTTP连接,首先必须建立TCP连接(SYN、SYN/ACK、ACK),然后发送一个带有很大报头的GET请求,最后接收服务器的响应(以及另一个大报头)

有了一个开放的WebSocket,您只需接收响应(无需请求),并且它附带了一个小得多的头:对于小帧,从2字节到10字节,对于大得离谱的帧(在千兆字节范围内)

您需要权衡两种成本(保持连接打开与建立新连接),以在两种协议之间做出决定


注:此答案基于当前的协议草案(草案-ietf-hybi-thewebsocketprotocol-09)。WebSocket发展迅速,许多实现仍然基于较旧的草稿,在最终确定之前,一些细节可能会发生变化。

@vitaut您链接的线程是关于Gmail的。。不完全是WebSocket。我编辑了我的问题,以便更多地关注问题的第二部分,以防混淆。是的,这绝对是一个服务器推送技术。但是,每5秒点击一次服务器,对服务器来说不是很费力吗。。(有时甚至更少)如果它每5秒点击一次,它只需每5秒提供一个到客户端的连接,然后可以关闭/重新使用此连接。当使用推送技术时,我的理解是连接必须始终存在。好的,好的。但是,我不是每5秒钟做一次,而是每次完成后都做。换句话说,连接。。完成,连接。。完成,连接。。完成,连接。。。在这种情况下,你的意见是什么(推还是拉?@Pacerier我还是先试试拉。如果您不满意,请尝试push.PS:对于实时游戏,您可能需要WS;对于基于回合的东西(如国际象棋),HTTP轮询可能是合适的。heys thx提供帮助。你认为什么样的延迟适合http轮询的国际象棋游戏?这可能取决于游戏的快节奏,闪电棋可能低至1秒,但在慢节奏的游戏中,5秒甚至10秒是可行的。最重要的是给用户一个良好的体验。我忘记提到的是,您需要知道服务器如何处理连接(基于线程或基于事件)。如果它为每个连接创建一个新线程,那么如果多个用户同时连接,那么内存就会耗尽。如果它是事件驱动的,那么WS可以非常有效。我理解线程理论,但您所说的WS的事件驱动实现是什么意思?@Pacerier我的意思是使用类似select()系统调用的东西来处理单个线程中的多个连接。看见