📅  最后修改于: 2023-12-03 15:05:55.572000             🧑  作者: Mango
WebSockets 是一种双向通信协议,它允许在客户端和服务器端之间建立持久连接,从而实现实时通信和数据传输。在 WebSockets 中,连接可以通过客户端或服务器端关闭。
在客户端中,可以通过调用 WebSocket 实例的 close()
方法来关闭连接。该方法可以带上两个参数:一个可选的关闭状态码,以及一个关闭原因字符串。例如:
webSocket.close(1000, "Connection closed by client");
在这个例子中,关闭状态码 1000 表示正常关闭,关闭原因字符串是 "Connection closed by client"。
在服务器端中,可以通过发送一个关闭帧(close frame)来关闭连接。当服务器端接收到一个关闭帧后,它应该立即响应一个关闭帧,并关闭连接。关闭帧包括一个关闭状态码和一个可选的关闭原因字符串。
要发送关闭帧,可以使用 WebSocket 实例的 send()
方法。例如:
webSocket.send(JSON.stringify({
type: "close",
code: 1000,
reason: "Connection closed by server"
}));
在这个例子中,我们先将关闭帧封装成一个 JSON 对象,然后将其转化为字符串,并使用 send()
方法发送。
在客户端和服务器端都可以为 WebSocket 实例添加一些事件监听器,以便在连接状态发生变化时做出相应的处理。常用的事件包括:
open
:当连接成功建立时触发;message
:当收到消息时触发;error
:当出现错误时触发;close
:当连接关闭时触发。例如,在客户端中可以这样写:
var webSocket = new WebSocket("ws://localhost:8080");
webSocket.addEventListener("open", function(event) {
console.log("Connection opened");
});
webSocket.addEventListener("message", function(event) {
console.log("Message received: ", event.data);
});
webSocket.addEventListener("error", function(event) {
console.error("Error occured: ", event);
});
webSocket.addEventListener("close", function(event) {
console.log("Connection closed with code ", event.code, " and reason: ", event.reason);
});
在服务器端也可以类似地添加事件监听器。