Fork me on GitHub

WebSocket 入门

WebSocket 入门

1、WebSocket 是一种网络通信协议。

2、为什么需要 WebSocket? 因为通过它服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息。而 HTTP 协议的通信只能由客户端发起。

3、协议标识符是 ws(如果加密,则为 wss),服务器网址就是 URL。eg:ws://example.com:80/some/path

4、WebSocket 对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
简介:  
WebSocket 对象提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的 API。

构造函数:
`WebSocket(url[, protocols])` 返回一个 WebSocket 对象

属性:
WebSocket.binaryType
使用二进制的数据类型连接

WebSocket.bufferedAmount 只读
未发送至服务器的字节数

WebSocket.extensions 只读
服务器选择的扩展

WebSocket.onclose
用于指定连接关闭后的回调函数

WebSocket.onerror
用于指定连接失败后的回调函数

WebSocket.onmessage
用于指定当从服务器接受到信息时的回调函数

WebSocket.onopen
用于指定连接成功后的回调函数

WebSocket.protocol 只读
服务器选择的下属协议

WebSocket.readyState 只读
当前的链接状态

WebSocket.url 只读
WebSocket 的绝对路径

方法:
WebSocket.close([code[, reason]])
关闭当前链接

WebSocket.send(data)
向服务器发送数据

示例:
// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080');

// Connection opened
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
});

// Listen for messages
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});

5、客户端的简单示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var ws = new WebSocket("wss://echo.WebSocket.org");

ws.onopen = function(event) {
console.log("Connection open ...");
ws.send("Hello WebSocket!");
}

ws.onmessage = function(event) {
console.log("Received Message: " + event.data);
ws.close();
}

ws.onclose = function(event) {
console.log(Connection closed.)
}

6、WebSocket 客户端的 API

(1) WebSocket 构造函数
WebSocket 对象作为一个构造函数,用于新建 WebSocket 实例。eg:var ws = new WebSocket('ws://localhost:8080'); 执行语句之后,客户端就会与服务器进行连接。

(2) webSocket.readyState

1
2
3
4
5
6
# readyState属性返回实例对象的当前状态,共有四种

CONNECTING:值为0,表示正在连接。
OPEN:值为1,表示连接成功,可以通信了。
CLOSING:值为2,表示连接正在关闭。
CLOSED:值为3,表示连接已经关闭,或者打开连接失败。

(3) webSocket.onopen

1
2
3
4
5
6
7
8
9
10
# 实例对象的 onopen 属性,用于指定连接成功后的回调函数
ws.onopen = function () {
ws.send('Hello Server!');
}

# 如果要指定多个回调函数,可以使用 addEventListener 方法
ws.addEventListener('open',
function fun1 (event) { ws.send('Hello Server1!');},
function fun2 (event) { ws.send('Hello Server2!');}
);

参考博客

WebSocket
WebSocket 教程

-------------本文结束感谢您的阅读-------------

本文标题:WebSocket 入门

文章作者:Yan ChongSheng

发布时间:2018年11月28日

最后更新:2018年11月28日

原始链接:yanchongsheng.github.io/2018/11/28/Other-2018-11-28-WebSocket入门/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

开启打赏模式