我对网络开发相当陌生,对一些概念感到困惑。具体来说,我不知道长轮询和网络套接字之间有什么区别。
长轮询是否涉及为每个请求启动到服务器的新TCP连接,还是存在一个持久的TCP连接来进行轮询?如果我正确理解它,我认为WebSockets允许在服务器和客户端之间交换数据的持久TCP连接,并且在头文件中提到了这个连接的持续时间。
如有任何意见/帮助,将不胜感激。
发布于 2018-03-30 03:19:19
长轮询是客户端向服务器发送http请求的地方。如果服务器有可用于请求的数据,它将在http响应和连接完成时立即返回该数据。
如果服务器没有立即拥有任何数据,那么它会将连接挂起一段时间(设计为小于典型的客户端超时)。如果数据在时间限制之前到达,则使用该数据发送http响应并完成连接。
如果在时间限制到期之前服务器中没有可用的新数据,那么服务器将返回一个响应,说明它还没有数据,并且已经完成了http套接字。此时,客户端在新套接字上发出新请求,并再次启动整个过程。
长轮询是否涉及为每个请求启动到服务器的新TCP连接,还是存在一个持久的TCP连接来进行轮询?
每次都有新的连接。这就是为什么投票效率不高的原因。
如果我正确理解它,我认为WebSockets允许在服务器和客户端之间交换数据的持久TCP连接,并且在头文件中提到了这个连接的持续时间。
webSocket被设计为一个持久的连接,可以持续很长时间,然后数据可以由客户端或服务器在任何时候发送。与http请求相比,webSocket连接有更多的设置,但一旦建立,它的效率会比长轮询高得多。
在这些参考资料中解释的更多信息:
在等待服务器端的一次性响应时,对websocket进行长轮询
HTML5 WebSocket:网络可伸缩性的量子飞跃
https://stackoverflow.com/questions/49567817
复制相似问题