首先说明一下什么是socket.io
,它和websocket
、Ajax
的区别在哪里。这里就不讲理论和运行机制了(我怕误人子弟…),只说一下我的理解。(socket.io/socketIO/socket
有时候称呼的很乱,我不太清楚有没有具体的区别和特殊的含义,我习惯叫socket.io
)
socket.io
和websocket
:websocket
是一种客户端和服务器之间双向实时通信技术,是HTML5
的新协议规范。websocket
在建立握手连接时,数据是通过HTTP协议传输的,但是在TCP
连接建立后,真正的数据传输阶段则不需要HTTP协议的参与。它讲究是随时随地的双向通信,应用场景包括客户端需要展示动态数据等。socket.io
则是为了兼容不同的浏览器,在websocket
上面封装了一层。socket.io
和Ajax
:Ajax
是单向的,即客户端通过HTTP协议和服务器单向通信,流程就是客户端发出请求,服务器做出相应。socket.io
是双向的随时随地的通信,只是用一次HTTP协议建立连接TCP
连接后,就不在使用HTTP协议了。优点也很明显节省带宽(HTTP数据包头本身的字节量较大)和服务器资源。
其他的详细介绍网上有很多就不在说了,网上说的千奇百怪的我就不贴网址了。下面说一下socket.