WebSocket 连接关闭时,会触发哪些事件?

简介: 【10月更文挑战第26天】

WebSocket连接关闭时,主要会触发两个事件:

close事件

  • 触发时机:当WebSocket连接正常关闭或因各种原因异常关闭时,都会触发close事件。例如,客户端或服务器端主动调用close()方法结束连接,或者由于网络故障、服务器崩溃等导致连接中断,都会引发该事件。
  • 事件对象属性close事件的事件对象包含一些有用的属性,用于提供关于连接关闭的详细信息。其中,code属性表示关闭连接的状态码,不同的状态码对应着不同的关闭原因。常见的状态码包括:
    • 1000:表示正常关闭,这是最常见的情况,通常是客户端或服务器端主动调用close()方法正常结束连接。
    • 1001:表示端点离开,例如用户关闭了浏览器窗口或离开了当前页面,导致WebSocket连接被关闭。
    • 1006:表示连接异常关闭,通常是由于底层网络连接丢失、服务器意外关闭等原因导致的非预期关闭情况。
    • 1011:表示服务器出现内部错误,导致无法继续处理WebSocket连接,从而关闭连接。
      reason属性则是一个可选的字符串,用于提供更详细的关闭原因说明。
  • 示例
socket.addEventListener('close', function(event) {
   
  console.log('WebSocket connection closed:', event.code, event.reason);
  // 根据不同的状态码和原因进行相应的处理
  if (event.code === 1000) {
   
    console.log('Connection closed normally.');
  } else {
   
    console.log('Connection closed abnormally:', event.reason);
  }
});

onerror事件

  • 触发时机:虽然onerror事件主要是在WebSocket连接过程中发生错误时触发,但在某些情况下,连接关闭也可能会导致onerror事件被触发。例如,当连接因网络错误而关闭时,浏览器可能会将这种情况视为一种错误,并触发onerror事件,以便开发者能够捕获并处理相关的错误信息。
  • 事件对象属性onerror事件的事件对象包含一个error属性,该属性指向一个Error对象,提供了关于所发生错误的详细信息,如错误消息、错误类型等。通过检查error对象的属性,可以获取更多关于连接关闭原因的线索,特别是在close事件的信息不够详细或无法明确判断关闭原因时,onerror事件中的错误信息可能会有助于进一步排查问题。
  • 示例
socket.addEventListener('error', function(event) {
   
  console.error('WebSocket error:', event.error);
  // 根据错误信息进行相应的处理,如记录错误、尝试重新连接等
});

综上所述,WebSocket连接关闭时通常会触发close事件,而在某些特定情况下也可能会触发onerror事件。通过监听这两个事件,开发者可以在连接关闭时进行相应的处理,如清理资源、更新界面状态、尝试重新连接等,以确保应用程序的稳定性和良好的用户体验。

相关文章
|
网络协议 数据安全/隐私保护
百度搜索:蓝易云【WebSocket:从建立连接到关闭的完整流程】
这是WebSocket的基本流程,它提供了一种实时、双向的通信方式,适用于需要实时数据传输的应用场景,如聊天应用、实时游戏等。
238 2
|
1月前
|
API 开发者
WebSocket API 中的 onerror 事件和 close 事件有什么不同?
【10月更文挑战第26天】`onerror`事件侧重于通知开发者WebSocket连接过程中出现的错误,以便进行相应的错误处理和恢复;而`close`事件则主要用于在连接关闭时进行资源清理和根据关闭情况采取适当的后续操作。两者在WebSocket应用的开发中都起着重要的作用,帮助开发者更好地管理和处理WebSocket连接的各种情况。
|
1月前
|
监控
|
1月前
|
安全 API UED
WebSocket API 中的 close 事件是如何触发的?
【10月更文挑战第26天】close事件的触发涵盖了从正常的连接关闭到各种异常情况导致的连接中断等多种场景。通过监听close事件,开发人员可以在连接关闭时进行相应的处理,如清理资源、更新界面状态或尝试重新连接等,以确保应用程序的稳定性和良好的用户体验。
|
4月前
|
前端开发 NoSQL JavaScript
Websocket 替代方案:如何使用 Firestore 监听实时事件
Websocket 替代方案:如何使用 Firestore 监听实时事件
|
4月前
|
关系型数据库 Serverless API
Serverless 函数实例问题之websocket连接如何解决
除了控制台,您还可以通过API或CLI使用PolarDB实例的Exec功能。API接口允许执行数据库命令,而阿里云CLI工具如`aliyun polardb`命令可用于管理数据库实例。详情参见[文档](https://help.aliyun.com/document_detail/137999.html)。
57 0
|
6月前
|
应用服务中间件 网络安全 nginx
处理 WebSocket 连接失败的最佳实践
WebSocket 目前已经成为了一项极为重要的技术,其允许客户端和服务器之间进行实时、全双工的通信。然而,在实际项目中,开发者时常会遇到 WebSocket 连接失败的情况。这不仅影响了用户体验,还可能导致不可预见的系统错误或数据丢失。那么,造成 WebSocket 连接失败的原因有哪些?又该如何解决这些问题呢?本文将逐一分析常见的 WebSocket 连接失败原因,并提供详细的解决方案。
|
7月前
|
监控 安全 API
WebSocket通过建立一个持久的连接实现实时双向通信
【5月更文挑战第2天】WebSocket通过建立一个持久的连接实现实时双向通信
210 4
|
7月前
|
移动开发 监控 网络协议
linux如何查看websocket的连接
linux如何查看websocket的连接
592 0
|
7月前
uni-app 62websocket连接权限验证和强制下线
uni-app 62websocket连接权限验证和强制下线
93 3