Websocket是什么?


一、 WebSocket是什么?

Websocket是一种网络通信协议,是一个在计算机里专门在【两点】之间传输数据的约定和规范。

二、 为什么存在WebSocket?

因为 HTTP 协议有一个缺陷:通信只能由客户端发起。

但实际上,如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务器有没有新的信息。

比如:摄像头识别到跌倒的人会在前端页面上报警,这个时候就需要服务器向客户端发送请求。

知道轮询的原理后,我们可以轻而易举得看出缺点是:效率低,且浪费资源。(因为每查看一下服务器是否有新消息的时候,就要建立tcp连接)

WebSocket是基于Http协议的,或者说借用了Http协议来完成一部分握手,在握手阶段与Http是相同的。

最重要的一点是:没有同源限制,客户端可以与任意服务器通信,也就不用考虑跨域的问题了。

三、 怎么使用WebSocket?

 1 var ws = new WebSocket("wss://example.websocket.com");//协议标识符是ws(如果加密,则为wss),括号里是服务器地址。新建 WebSocket 实例,客户端就会与服务器进行连接。
 2 
 3 ws.onopen = function(e) { 
 4   console.log("Connection open ..."); 
 5   ws.send("Hello WebSockets!");
 6 };  //实例对象的onopen属性,用于指定连接成功后的回调函数。
 7 
 8 ws.onmessage = function(e) {
 9   console.log( "Received Message: " + e.data);
10   ws.close();
11 };  //实例对象的onmessage属性,用于指定收到服务器数据后的回调函数。
12 
13 ws.onclose = function(e) {
14   console.log("Connection closed.");
15 };    //实例对象的onclose属性,用于指定连接关闭后的回调函数。
16 
17 //实例对象的send()方法用于向服务器发送数据。
现在的想法是