一.websocket简介
在websocket未出来之前,实现实时数据更新都是采用轮询http请求实现的,很明显这种方式有很大的缺陷,一条数据就需要发一次http请求。HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。而比较新的技术去做轮询的效果是Comet。这种技术虽然可以双向通信,但依然需要反复发出请求。而且在Comet中,普遍采用的长链接,也会消耗服务器资源。在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
websocket是一种建立在TCP协议上的一种长链接通讯模式,是HTML5推出的,全称是全双工通讯协议。它可以实现服务器和客户端双向通讯,也就是前后端可以互相发送数据。
二.WebSocket优势
浏览器和服务器只需要要做一个握手的动作,在建立连接之后,双方可以在任意时刻,相互推送信息。同时,服务器与客户端之间交换的头信息很小。实时更新数据,连接不会断开。
运用项目场景:实时数据更新、聊天信息、大数据列表更新。
三.简单介绍一下长链接和短链接
● 长链接:
连接->传输数据->保持连接 -> 传输数据->............ ->关闭连接。
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。
● 短链接:
连接->传输数据->关闭连接
HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。
四.websocket 的四个主要事件:
1.open事件:一旦服务器响应了WebSocket连接请求,open事件触发并建立一个连接。open事件对应的回调函数称作onopen。 open事件触发时,协议握手已经完成,WebSocket已经准备好发送和接收数据。如果应用程序接收到一个open事件,那么可以确定WebSocket服务器成功地处理了连接请求,并且同意与应用程序通信。
2.message事件:message事件在接收到消息时触发,对应于该事件的回调函onmessage。
3.error事件:error事件在响应意外故障的时候触发,与该事件对应的回调函数为onerror。一般error触发了很快就会触发close关闭链接事件,所以当项目中websocket无法建立连接时控制台打印会让人误以为直接触发的close事件。
4.close事件:close事件在WebSocket连接关闭时触发,对应于close事件的回调函数是onclose。一旦连接关闭,客户端和服务器不再接收或者发送消息。当调用close() 方法终止与服务器的连接时,也会触发onclose事件处理程序。close事件中的代码和原因有时候能告诉你错误的根源,error事件处理程序是调用服务器重连逻辑以及处理来自WebSocket对象异常的最佳场所。