websocket前端的连接与接收数据

什么是websocket

1, WebSocket是一种用于在客户端和服务器之间进行全双工通信的网络协议。它使得在单个TCP连接上可以进行双向通信,允许服务器主动地发送数据给客户端,同时客户端也可以向服务器发送数据。与传统的HTTP请求-响应模型不同,WebSocket允许实时通信,从而可以支持实时更新的应用程序,如即时聊天、在线游戏和股票市场报价。

2,WebSocket协议通过建立持久化的连接,避免了HTTP请求的额外开销和延迟。客户端可以使用WebSocket API与服务器建立连接,并通过发送和接收消息进行通信。WebSocket还支持一些高级功能,如心跳检测、数据压缩和扩展。

3,本文是在可视化数据大屏中使用进行的一些操作

//webScoket初始化方法data(){return{websocket: {},//连接后端的地址(这里要替换成自己后端的连接地址)websocketUrl: 'ws://192.168.1.14:2000/',//判断是否重新连接lockReconnect: false,}}//自己在data  里面定义这些参数webScoketInit() {var that = this;that.websocket = new WebSocket(that.websocketUrl);//连接发生错误的回调方法that.websocket.onerror = function (event) {//尝试重新连接reconnect(that.websocketUrl);console.log(event);console.log('连接错误')};//连接成功建立的回调方法that.websocket.onopen = function (event) {//心跳检测重置heartCheck.reset().start();console.log(event,'成功数据');console.log('连接开启')}//接收到消息的回调方法that.websocket.onmessage = function (event) {//心跳检测重置let res = event.data//获取到后台发送的数据并转为json类型可转可不转 转了可能报错请根据自身情况修改//接收的后端返回数据console.log(res, '==============websocks')//进行业务处理 大数据可视化需要刷新页面if(res=="reload"){that.websk()}heartCheck.reset().start();}//连接关闭的回调方法that.websocket.onclose = function (event) {//尝试重新连接reconnect(that.websocketUrl);console.log(event);console.log('连接关闭')}//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。window.onbeforeunload = function () {closeWebSocket();}//重新连接function reconnect(url) {if (that.lockReconnect) return;// console.log('连接成功')that.lockReconnect = true;//没连接上会一直重连,设置延迟避免请求过多setTimeout(function () {// that.websocket = new WebSocket(url);that.webScoketInit();that.lockReconnect = false;console.log('重连中')}, 2000);}//心跳检测var heartCheck = {//1分钟发一次心跳,时间设置小一点较好(50-60秒之间)timeout: 1000,timeoutObj: null,serverTimeoutObj: null,reset: function () {clearTimeout(this.timeoutObj);clearTimeout(this.serverTimeoutObj);return this;},start: function () {var self = this;this.timeoutObj = setTimeout(function () {//这里发送一个心跳,后端收到后,返回一个心跳消息,//onmessage拿到返回的心跳就说明连接正常that.websocket.send("ping"); //给服务器发送ping(可自定义与后端协调)//如果超过一定时间还没重置,说明后端主动断开了self.serverTimeoutObj = setTimeout(function () {//如果后端没回应就自动断开在从新连接console.log('重新连接')//如果onclose会执行reconnect,我们执行socket.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次that.websocket.close();}, self.timeout)}, this.timeout)}}//关闭WebSocket连接function closeWebSocket() {that.websocket.close();}},websk() {window.location.reload()},

成功示例图

在这里插入描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/7919.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scrapy框架--settings配置 (详解)

目录 settings配置 官网-参考配置 配置文档 Scrapy默认BASE设置 settings配置 Scrapy框架中的配置文件(settings.py)是用来管理爬虫行为和功能的关键部分。它是一个Python模块,提供了各种配置选项,可以自定义和控制爬虫的行为。…

【IMX6ULL驱动开发学习】12.Linux驱动之设备树

承接上一篇博客 【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分) 代码获取:https://gitee.com/chenshao777/imx6-ull_-drivers 我后面将三个层合并了(实际上只有前两层),合并…

[论文阅读] (31)李沐老师视频学习——4.研究的艺术·理由、论据和担保

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…

Element-Plus select选择器-下拉组件错位bug(有高度滚动时)

1. bug重现 由于项目不便展示,因此在官网复现bug https://element-plus.org/zh-CN/component/select.html#基础用法 2. 调试 源码调试时发现下拉菜单是直接放在body 元素里,这时候希望它不要直接放在body里, 查阅文档看到这两个属性&#x…

软件工程期末报告(登录注册部分)

云小智微校园工具系统的设计与实现成员1注册模块 目录 云小智微校园工具系统的设计与实现成员1注册模块 第一章 绪论 第二章需求分析: 1.活动图: 2.用例图: 什么用户参与了业务模块: 这类用户在模块中使用什么功能学生用户…

【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据更新场景策略和方案分析)

一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据更新场景策略和方案分析) 数据更新场景Cache Aside Pattern策略思想具体操作分析失效(Invalidation)命中(Cache Hit)更新&…

【python】python编程基础

基础工具包 python 原生数据结构元组 Tuple列表 list集合 set字典 dictionary NumPy 数据结构数组 Ndarray矩阵 Matrix Pandas 数据结构序列 Series (一维)数据框 DataFrame (二维) Matplotlib 数据可视化绘制饼图绘制折线图绘制直…

git学习使用技巧

目录 关于版本控制 本地版本控制系统 集中化的版本控制系统 分布式版本控制系统 Git 是什么 直接记录快照,而非差异比较 近乎所有操作都是本地执行 Git 保证完整性 Git 一般只添加数据 三种状态 起步 - 初次运行 Git 前的配置 初次运行 Git 前的配置 用户…

软件测试流程扫盲:V/W/H模型,测试左移测试右移

一、软件测试模型 (一)V模型 V模型是瀑布模型的一种改进V模型标明了测试过程中的不同阶段 1.V模型每个测试阶段的测试内容 单元测试:类、函数 集成测试:接口 系统测试:前期测功能有没有满足需求,后期满…

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库

介绍 Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&a…

Meta为打造元宇宙不惜下血本:VR开发者年薪高达百万美元

7 月 2 日消息,尽管 2023 年被 Meta 称为“效率年”,但事实证明 Meta 正在以高得离谱的薪水吸引 VR 人才。据《华盛顿邮报》报道,该公司为了吸引优秀的 VR 开发者,提供了高达百万美元的年薪,远超市场水平。 报道援引知…

隐藏菜单之菜单和搜索

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>菜单</title><style>/* css代码开始*/* {margin: 0;padding: 0;box-sizing: border-box;}b…