我对网络开发相当新,并对一些概念感到困惑。具体来说,我不确定长轮询和Web套接字之间有什么区别。
长轮询是否涉及为每个请求启动到服务器的新TCP连接,或者是否存在执行轮询的持久TCP连接?如果我理解正确,我认为WebSockets允许持久的TCP连接,在服务器和客户端之间交换数据,并在标题中提到此连接的持续时间。
任何评论/帮助将不胜感激。
答案 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