ajax轮询 长连接 WebSocket

ajax轮询:

客户端在间隔时间内进行不断向服务端发送请求

长轮询:

长轮询是指在客户端发起请求,但是服务端没有对应的response,不会返回一个空结果会将请求搁置在有结果时进行返回response(或者的特定的时间返回)

长连接:

HTTP/1.0中默认使用的短链接(好多博客这么说)既每一次客户端向服务端发出请求(request),服务端发送(response)给客户端一对一,但是在HTTP/1.1当中默认使用了长连接,用以保持连接特性要使用长连接需要在客户端请求头中加入:Connection:keep-alive,此时客户端请求完成时该请求不会断开,再次请求时还是使用这个请求,但是也是会消失需要服务端软件进行配置,要进行长链接需要客户端以及服务端同时支持。

WebSocket

WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯(双向通信)的协议。在客户端向服务端发起请求即可见了长久的链接,并且进行双向的数据传输。

Websocket使用和 HTTP 相同的 TCP 端口,可以绕过大多数防火墙的限制。默认情况下,Websocket协议使用80端口;运行在TLS之上时,默认使用443端口

抄的一个例子

 function WebSocketTest()
         {
            if ("WebSocket" in window)
            {
               alert("您的浏览器支持 WebSocket!");
               
               // 打开一个 web socket
               var ws = new WebSocket("ws://localhost:9998/echo");
				
               ws.onopen = function()
               {
                  // Web Socket 已连接上,使用 send() 方法发送数据
                  ws.send("发送数据");
                  alert("数据发送中...");
               };
				
               ws.onmessage = function (evt) 
               { 
                  var received_msg = evt.data;
                  alert("数据已接收...");
               };
				
               ws.onclose = function()
               { 
                  // 关闭 websocket
                  alert("连接已关闭..."); 
               };
            }
            
            else
            {
               // 浏览器不支持 WebSocket
               alert("您的浏览器不支持 WebSocket!");
            }
         }
      </script>
原文地址:https://www.cnblogs.com/zhangweihu/p/7122514.html