📜  WebSockets-关闭连接(1)

📅  最后修改于: 2023-12-03 15:05:55.572000             🧑  作者: Mango

WebSockets - 关闭连接

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);
});

在服务器端也可以类似地添加事件监听器。

参考资料