Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

WebSocket

介绍

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
主要用于代替 Ajax 轮询。节省服务器资源和带宽,进行实时通讯。

使用

构造函数

1
new WebSocket(url[, protocols])
  • url:目标 WebSocket 服务器的连接地址。该 URL 必须使用以下方案之一:ws、wss、http 或 https,且不得包含 URL 片段。如果提供的是相对 URL,则其相对于调用脚本的基础 URL。
  • protocols: 可选,一个协议字符串或者一个包含协议字符串的数组。这些字符串用于指定子协议。

属性

介绍
WebSocket.onclose 用于指定连接关闭后的回调函数。
WebSocket.onerror 用于指定连接失败后的回调函数。
WebSocket.onmessage 用于指定当从服务器接受到信息时的回调函数。
WebSocket.onopen 用于指定连接成功后的回调函数。
WebSocket.protocol 只读,服务器选择的下属协议。
WebSocket.readyState 只读,当前的链接状态。
WebSocket.url 只读,WebSocket 的绝对路径。

方法

介绍
WebSocket.close([code[, reason]]) 关闭当前链接。code:可选,默认1005,数字状态码,连接关闭的原因。
reason:可选,字符串,连接关闭的原因。不能超过 123 个字节。
WebSocket.send(data) 对要传输的数据进行排队。data:用于传输至服务器的数据。

事件

使用 addEventListener() 或将一个事件监听器赋值给本接口的 oneventname 属性,来监听下面的事件。

介绍
close 连接被关闭。
error 连接因错误而关闭,例如无法发送数据时。
message 收到数据时触发。
open 连接成功时触发。

示例

1
2
3
4
5
6
7
8
9
10
11
12
// 创建 WebSocket 连接
const socket = new WebSocket("ws://localhost:8080");

// 连接成功
socket.addEventListener("open", function (event) {
socket.send("Hello Server!");
});

// 收到数据
socket.addEventListener("message", function (event) {
console.log("Message from server ", event.data);
});

参考资料

Mwd WebAPI-WebSocket
菜鸟 WebSocket

关于本人

HaiYao的博客
Git主页

评论