代码语言:javascript复制
WebSocket(url[, protocols])
url就是要连接的websocket的地址,那么可选的protocols是什么呢?protocols可以传入单个协议字符串或者是协议字符串数组。它指的是 WebSocket 服务器实现的子协议。
子协议是在WebSocket协议基础上发展出来的协议,主要用于具体的场景的处理,它是是在WebSocket协议之上,建立的更加严格的规范。
比如,客户端请求服务器时候,会将对应的协议放在Sec-WebSocket-Protocol头中:
代码语言:javascript复制GET /socket HTTP/1.1
...
Sec-WebSocket-Protocol: soap, wamp
服务器端会根据支持的类型,做对应的返回,如:
代码语言:javascript复制Sec-WebSocket-Protocol: soap
WebSocket API有四种状态,分别是:
状态定义 | 取值 |
---|---|
WebSocket.CONNECTING | 0 |
WebSocket.OPEN | 1 |
WebSocket.CLOSING | 2 |
WebSocket.CLOSED | 3 |
通过调用close或者Send方法,会触发相应的events事件,WebSocket API 的事件主要有:close,error,message,open这4种。
下面是一个具体使用的例子:
代码语言:javascript复制// 创建连接
const socket = new WebSocket('ws://localhost:8000');
// 开启连接
socket.addEventListener('open', function (event) {
socket.send('没错,开启了!');
});
// 监听消息
socket.addEventListener('message', function (event) {
console.log('监听到服务器的消息 ', event.data);
});