如何(关闭)断开 Websocket 连接:简单易懂的实现指南
创作时间:
作者:
@小白创作中心
如何(关闭)断开 Websocket 连接:简单易懂的实现指南
引用
CSDN
1.
https://blog.csdn.net/m0_71808387/article/details/137226809
WebSocket 协议提供了一条用于 Web 应用程序中双向通讯的高效通道,让服务器能够实时地向客户端发送信息,而无需客户端每次都发起请求。本文旨在探讨有关结束 WebSocket 连接的适当时机,内容包括协议的基础知识、如何结束连接、一些使用场景,以及归纳总结。
WebSocket 的基础
WebSocket 协议运作在 TCP 之上,并通过 HTTP 握手升级协议以建立持久连接。这种机制允许数据在服务器和客户端之间双向流动。不同原因会导致需要终结这些连接。
终结连接的常见原因
- 主动关闭:用户或应用程序明确进行关闭操作,例如关闭浏览器窗口或跳转页面。
- 闲置超时:长时间无交互,双方可以基于超时逻辑关闭连接,节约资源。
- 错误:服务端或客户端错误可能导致连接断开。
- 网络问题:网络不稳定或断连可致 WebSocket 连接断开。
- 协议不符:双方 WebSocket 协议版本不兼容或存在协议违背行为。
- 资源限制:服务器为了保持性能,可能会限制连接数,超出限制时关闭部分连接。
- 安全政策:基于安全考量,特定的连接请求可能会被拒绝。
- 会话失效:身份验证过期需要用户重新登录。
- 维护:服务器维护或升级可能需要临时关闭连接。
结束连接的手段
服务端主动关闭
服务端可以通过发送一个含有特定关闭码的帧来主动结束连接。
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3000 });
wss.on('connection', (ws) => {
ws.close(1000, '服务端结束连接');
});
客户端主动关闭
客户端也可发送关闭帧结束连接。
const socket = new WebSocket('ws://example.com');
socket.close(1000, '客户端主动断开');
闲置超时
双方可设定超时机制,若一定时间内无数据传输则自动关闭连接。
实际操作案例
设想构建一个在线聊天应用,若用户一段时间无活动,则服务器断开其 WebSocket 连接。
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3000 });
wss.on('connection', (ws) => {
let isActive = true;
ws.on('message', (message) => {
if (isActive) {
// 消息处理逻辑...
}
});
const timeout = setTimeout(() => {
if (!isActive) {
ws.close(1000, '用户闲置过久');
}
}, 60000); // 60秒超时
ws.on('pong', () => {
isActive = true;
});
ws.on('close', () => {
clearTimeout(timeout);
});
});
在 Apifox 中测试 WebSocket
试验 WebSocket 接口以验证应用的功能,这时 Apifox 的强大测试能力派上用场了。只需新建一个 HTTP 项目,添加一个 WebSocket 接口,输入服务器 URL,享受其简易的测试流程。
小结
理解 WebSocket 连接何时应当结束至关重要,无论是主动操作、超时还是出于安全和性能考虑。正确管理这些连接有益于资源节约、安全保障和用户体验提升。通过本文的介绍和案例,希望能帮助您更好地理解并实施 WebSocket 连接管理策略。
本文原文来自CSDN
热门推荐
最长可十年不用还本金,房贷“先息后本”还款火了,划算吗?
BLG最大谜团:On状态低迷成隐患,Bin夺冠宣言底气何在?
好太太燃气灶更换点火针的步骤
光伏电站容配比是多少?
当下社会最可怕的现象:傻子共振!
心律失常是什么原因导致的
尿微量白蛋白/尿肌酐比值(ACR)的检测及其临床意义
生化检验里的“前白蛋白”,多少患者看不明白
三星堆的青铜器为何重要?近百位专家学者共话三星堆文化与中国青铜时代
三代纳米孔测序优势分析1-1
地方出现补税情况,税务总局回应“没有倒查30年安排”
吉他演奏20种必学技巧详解:从入门到进阶的全面指南
去澳洲读硕士留学申请材料准备全攻略
车子配置的查看方法有哪些?如何全面了解车辆的各项配置?
屋顶绿化常用植物【炮仗花】
【卸妝推薦】卸妝膏、卸妝油、卸妝水點揀好?15款真實用家推介產品!
一项被低估的有氧运动,比跑步轻松,还对膝盖友好
子午养生桩正确姿势与练习方法详解
判断肌肉拉伤的6种方法
单包门套和双包门套的区别及适用场景
中医药养生:科学方法与实践
AI时代文科生的未来:挑战与机遇并存
香港科技大学硕士研究生申请全攻略
上海黄浦区这幢闲置的写字楼,是怎样在四天内变身方舱医院的?
士兰微持股比例降至25.18%,不再将士兰集宏纳入合并报表范围
婴儿哭闹的护理
哪吒2幕后的动作捕捉技术,动捕技术在百亿级动画电影中的含金量
乌兰浩特旅游路线:全景攻略与推荐指南
word文档简历该怎么分节处理
机关事业单位养老保险转移接续该如何做