轮询和Web套接字中的连接

时间:2018-03-30 03:00:31

标签: web websocket client polling web-development-server

我对网络开发相当新,并对一些概念感到困惑。具体来说,我不确定长轮询和Web套接字之间有什么区别。

长轮询是否涉及为每个请求启动到服务器的新TCP连接,或者是否存在执行轮询的持久TCP连接?如果我理解正确,我认为WebSockets允许持久的TCP连接,在服务器和客户端之间交换数据,并在标题中提到此连接的持续时间。

任何评论/帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

长轮询是客户端向服务器发送http请求的地方。如果服务器具有可用于请求的数据,则它会立即返回该数据作为http响应并完成该连接。

如果服务器没有立即拥有任何数据,那么它会挂起连接一段时间(设计为小于典型的客户端超时)。如果数据在时间限制之前到达,则http响应随数据一起发送,连接完成。

如果在时间限制到期之前服务器中没有新数据,则服务器返回一个响应,表明它还没有数据,并且http套接字已完成。此时,客户端在新套接字上发出新请求,并重新开始整个过程​​。

  

长轮询是否涉及为每个请求启动到服务器的新TCP连接,或者是否存在用于轮询的持久TCP连接?

每次都有新连接。这就是为什么民意调查效率不高的原因。

  

如果我理解正确,我认为WebSockets允许持久的TCP连接,在服务器和客户端之间交换数据,并且标题中提到了此连接的持续时间。

webSocket被设计为持久连接,可以持续很长时间,然后客户端或服务器可以随时发送数据。与http请求相比,webSocket连接具有额外的设置,但一旦建立就可以比长轮询更有效。

这些参考文献中解释了更多信息:

websocket vs rest API for real time data?

Long-polling vs websocket when expecting one-time response from server-side

HTML5 WebSocket: A Quantum Leap in Scalability for the Web