利用websocket检测网络连接稳定性

server/2025/2/23 4:35:32/

浏览器中打开F12,控制台中输入以下内容 > 回车 > 等待结果
连接关闭 表示断网

在这里插入图片描述

let reconnectDelay = 1000; // 初始重连间隔
let pingInterval = null;
let socketManuallyClosed = false; // 标志是否手动关闭function createWebSocket() {if (socketManuallyClosed) return;const socket = new WebSocket("wss://echo.websocket.org");socket.onopen = function () {console.log(new Date().toLocaleString(), "WebSocket 连接成功");socket.send("Hello WebSocket!");// 发送心跳包(每 30 秒)pingInterval = setInterval(() => {if (socket.readyState === WebSocket.OPEN) {socket.send("ping");// console.log(new Date().toLocaleString(), "发送 ping");}}, 30000);// 重置重连时间reconnectDelay = 1000;};socket.onmessage = function (event) {if(event.data === 'ping') returnconsole.log(new Date().toLocaleString(), "收到消息:", event.data);};socket.onerror = function (error) {console.error(new Date().toLocaleString(), "WebSocket 错误:", error);socket.close(); // 触发 onclose 进行重连};socket.onclose = function () {console.log(new Date().toLocaleString(), "WebSocket 连接关闭");clearInterval(pingInterval);if (!socketManuallyClosed) {setTimeout(() => {console.log("尝试重新连接 WebSocket...");createWebSocket();}, reconnectDelay);// 指数退避:每次失败后重连间隔增加,最大 60 秒reconnectDelay = Math.min(reconnectDelay * 2, 60000);}};
}// 启动 WebSocket 连接
createWebSocket();

http://www.ppmy.cn/server/169158.html

相关文章

idea打开springboot项目打不开文件夹 一直loading

点击file - InvalidateCaches 全选 后点击 Invalidate and Restart

使用Python爬虫实时监控行业新闻案例

目录 背景环境准备请求网页数据解析网页数据定时任务综合代码使用代理IP提升稳定性运行截图与完整代码总结 在互联网时代,新闻的实时性和时效性变得尤为重要。很多行业、技术、商业等领域的新闻都可以为公司或者个人发展提供有价值的信息。如果你有一项需求是要实时…

网络安全架构战略 网络安全体系结构

本节书摘来自异步社区《网络安全体系结构》一书中的第1章,第1.4节,作者【美】Sean Convery 1.4 一切皆为目标 网络安全体系结构 当前的大型网络存在着惊人的相互依赖性,作为一名网络安全设计师,对这一点必须心知肚明。Internet就…

“mysqld --initialize --console ”执行不成功情况总结和解决措施

我的MYSQL版本是9.0.1出现类似下列的报错: 2024-10-29T01:09:55.942951Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start. 2024-10-29T01:09:55.950379Z 0 [Warning] [MY-010915] [Server] NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIV…

深度学习中的知识蒸馏

知识蒸馏(Knowledge Distillation)是一种模型压缩技术,旨在将大型、复杂的模型(通常称为教师模型)的知识迁移到小型、简单的模型(学生模型)中。通过这种方式,学生模型可以在保持较高…

DeepSeek从入门到精通(清华大学)

​ DeepSeek是一款融合自然语言处理与深度学习技术的全能型AI助手,具备知识问答、数据分析、编程辅助、创意生成等多项核心能力。作为多模态智能系统,它不仅支持文本交互,还可处理文件、图像、代码等多种格式输入,其知识库更新至2…

【阮一峰】5.函数

函数 简介 函数的类型声明,需要在声明函数时,给出参数的类型和返回值的类型。 function hello(txt: string): void {console.log("hello " txt); }如果变量被赋值为一个函数,变量的类型有两种写法。 // 写法一 const hello f…

【漫话机器学习系列】095.决策边界(Decision Boundary)

1. 什么是决策边界? 决策边界(Decision Boundary)是用于划分不同类别的边界线或超平面。在分类任务中,模型根据输入特征的值来决定样本的类别,决策边界正是模型将输入空间划分为不同类别区域的关键。 在上图中&#…