vue项目中 使用 websocket

2023-05-16

Websocket是一个持久化的协议,HTTP是不支持持久连接的

Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已

比如说我们现在有个需求,实时获取一个网站当前的访问人数, 如果使用http协议去做的话,那我们要使用轮询,用定时器隔一秒查一次,这样的话非常的消耗我们的效率.这个时候就需要websocket了,也就是当数据发生改变的时候让后台主动把东西给我们,而不是从我们前台去要.下面用图来表示一下两种协议:

 

简单的了解了websocket之后,接下来就是如何在vue项目中去使用websocket了

在vuejs框架中使用websocket , 可以比较方便的运用到vuejs框架的响应式系统 , 以及一些简单的生命周期函数

下面就是详细的使用方式:

1.如果是全局的websocket,则需要在main.js中进行设置websocket,具体如图所示:

     

ReconnectingWebSocket是类库reconnecting-websocket , 可以进行自动的断线重连,引入连接 :  


<script src="https://cdn.bootcss.com/reconnecting-websocket/1.0.0/reconnecting-websocket.min.js"></script>  

如果不使用断线重连的话,那么就直接new Websocket(地址)就可以了

上图中有个onmessage方法,这是websocket中,接收到消息后出发的函数,在其形参中可以拿到后端返回的数据. onopen是打开websocket的连接

接着讲几个websocket中比较重要的几个回调函数:

  

let  websocket = new WebSocket(后台给的地址);
 
   //连接发生错误的回调方法
   websocket.onerror = function () {
       setMessageInnerHTML("WebSocket连接发生错误");
   };
   //连接成功建立的回调方法
   websocket.onopen = function () {
       //setMessageInnerHTML("WebSocket连接成功");
   }
   //接收到消息的回调方法
   websocket.onmessage = function (event) {
       setMessageInnerHTML(event.data);
   }
   //连接关闭的回调方法
   websocket.onclose = function () {
       //setMessageInnerHTML("WebSocket连接关闭");
   }
   //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
   window.onbeforeunload = function () {
       websocket.close();
   }

2.如果是某个组件需要用到websocket,那么就到当前组件中,完成上述操作,不同的是,我这里离开当前路由的时候希望当前连接关闭,所以我是利用了导航守卫去关闭连接(注意写的时候和生命周期同级),如下:

 beforeRouteLeave(to, from, next) {
    this.socket.close();
    console.log("关闭连接");
    next();
  },

 

如果有错误,欢迎大家及时指出,相互沟通.

前端小菜鸟,多多指教,啊哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue项目中 使用 websocket 的相关文章

  • WebSocket 连接建立时出错:net::ERR_CONNECTION_CLOSED

    当我尝试建立一个wss与我的服务器的连接 与 wss mydomain 3000 的 WebSocket 连接失败 错误 连接建立 net ERR CONNECTION CLOSED 我目前有一个 apache2 虚拟主机配置设置来侦听端口
  • WebSocket 连接到 TIdHTTPServer,握手问题

    我正在使用 C Builder 10 1 Berlin 编写一个简单的 WebSocket 服务器应用程序 该应用程序在端口上侦听从 Web 浏览器 例如 Google Chrome 发送的一些命令 在我的表单上 我有一个 TMemo TB
  • Elastic Beanstalk 剥离 Sec-WebSocket-Accept 标头

    我正在尝试让 NET Core 应用程序在 elastic beanstalk 上运行 以从浏览器中的 javascript 接收 websockets 连接 当我在本地计算机上测试 AWS 之外的客户端和服务器时 我能够在两者之间建立 W
  • 有没有一个好方法来保存socket.io消息历史记录

    我想记录socket io消息历史记录 即两个用户交谈的内容 以供以后使用 是否有一些socket io内置函数可以实现这一点 或者如果没有 有什么好的方法来实现它 首先 您需要某种方法来识别具有唯一 ID 的用户 该 ID 在用户断开连接
  • 使用来自 WebSocket @ServerEndpoint 的 CDI @SessionScoped bean

    在 Web 应用程序中 用户使用 servlet HTTP 会话 一些数据存储在 CDI SessionScoped beans 中 稍后在某些页面中 WebSocket 通信是在用户浏览器和服务器之间执行的 对于 GlassFish 4
  • 我可以在浏览器中启动 socket.io/websocket 服务器吗?

    之前有人问过这个问题 答案是否定的 但是现在 有了 browserify webpack 我可以像在服务器上那样编写代码吗 它会在浏览器中运行 还是有任何限制使这变得不可能 你不能 在浏览器中启动服务器需要访问浏览器中根本不存在的低级功能
  • Play框架2.5.0 Websockets示例[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 播放框架 2 5 0 Websockets 示例 在 play 2 5 0 websockets 代码
  • Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境

    我有 Rails 3 2 应用程序和 gem websocket rails 0 7 在开发机器上 一切正常 在生产环境中 我使用 Nginx 1 6 作为代理服务器 使用 Unicorn 作为 http 服务器 Thin 用于独立模式 如
  • 我应该使用全局变量在整个服务器上共享 socket.io 实例吗

    以下是我的 node js 应用程序中的 server js 文件 我希望我的 socket io 实例能够被服务器上的其他文件访问 以便从我的 API 发出事件 listingRoutesApi userRoutesApi etc ref
  • 允许在 Google 计算引擎 (GCE) 中使用 WebSocket

    我正在使用计算引擎 GCE 通过 Socket IO Node js 运行我的套接字服务器 它仅适用于轮询 当我尝试使用网络客户端时 我收到以下错误代码 WebSocket connection to ws myapp socket app
  • NodeJS 如何在没有 WebSocket 的情况下处理持久连接?

    我对 NodeJS 真的很陌生 如果我对某些东西听起来很天真 我很抱歉 并且我一直在深入研究示例的源代码聊天应用 http github com ry node chat 但是 我无法理解一件事 我知道 WebSockets 有助于处理持久
  • Dart 将客户端 Socket 升级为 WebSocket

    Since WebSocket https api dartlang org stable 2 1 0 dart io WebSocket class html在 Dart 中不允许直接设置安全上下文 https api dartlang
  • 在cypress中捕获websocket请求

    我试图捕获测试期间发生的所有请求 我的应用程序使用 WebSocket 并且使用拦截命令我无法捕获 wss 请求 有什么办法可以做到这一点吗 我认为拦截命令不能直接捕获网络套接字 一种方法是观察 ws 通信的结果 如下所示使用 Cypres
  • 通过 Websockets 进行 WebRTC 视频聊天

    我正在尝试使用 webRTC 和 WebSockets 进行信号发送来开发视频聊天应用程序 我的问题是 我不知道创建 RTCPeerConnection 并通过 webSocket 连接两个对等点 2 个浏览器 的过程是什么 至少在本地 我
  • 使用 Netty 将 websocket 与在 tomcat 中运行的 Spring Web 应用程序集成

    我有一个使用 Netty 的 Web 套接字服务器实现 例如监听端口 8081 和一个在 Tomcat 中运行的单独的 Spring Web 应用程序 在端口 80 中运行 我想以某种方式将所有来自 localhost 80 Websock
  • 在 Apache 上设置 websocket?

    所以我正在对 websockets 进行一些研究 我有几个问题似乎找不到明确的答案 如何在 Linux 服务器上设置 Web 套接字 有 Apache 模块吗 我可以吗have使用第 3 方 PHP 代码或类似代码 除了浏览器兼容性之外 问
  • 使用单个“proxyServer”将 Websocket 代理到多个目标

    我正在开发一个nodeJS websocket代理服务器 用例是当 websocket 请求到来时 我将检查其凭据 添加新标头 然后根据其组 来自用户 ID 将 websocket 连接重定向到其目标 webscoket 服务器 我发现大多
  • 如何等待 WebSocket 就绪状态更改

    我正在尝试实现一个可以回退到轮询的 WebSocket 如果WebSocket连接成功 readyState变为1 但如果失败 readyState是 3 我应该开始轮询 我尝试过这样的事情 var socket new WebSocket
  • React Native Android 无法连接到 WebSocket

    尽管 Web 实现可以工作 但 android 模拟器以及我的设备无法连接到 WebSocket 在引发错误的地方收到以下事件错误代码 然后断开连接 connection error Event isTrusted false messag
  • 从 websocket 发送数据到 socket.io

    我使用 websocket 接口连接到 websocket 服务器 如果我想将通过 websocket 接口从 websocket 服务器接收到的数据发送到通过 http 服务器连接到我的客户端 我应该使用 socket io 吗 所以最后

随机推荐

  • Vista下AD1980/AD198X声卡驱动

    一直以来 xff0c AD198X声卡并无官方驱动 由于此型号芯片太老 xff0c 大多数OEM厂也停止对它的支持 如果使用XP下的驱动来强行代替 xff0c 会出现爆音以及设备间歇性失效的问题 使用RT的AC97 codec来代替 xff
  • python opencv cython

    在python中import cython编译的 so文件时报错 ImportError salmetric so undefined symbol ZN2cv12 OutputArrayC1ERNS 3MatE 解决方法见4 1 ldd
  • 关于 Windows照片查看器/图片查看器 颜色不准、存在色差的问题的解决方法

    多次遇到过这个现象 xff0c 就是用windows照片查看器 图片查看器 xff0c 显示的照片颜色不准 xff0c 跟用Photoshop校正过的显示或者IE浏览器中的显示 xff0c 存在明显的色差 这个情况出现的具体原因目前尚未能知
  • “此工作站和主域间的信任关系失败”之解决

    某虚拟化的域控制器出现严重故障以至于不可修复 xff0c 故使用之前Hyper V中导出的备份恢复了域控制器 恢复后基本功能正常 xff0c 但部分工作站登录时提示 此工作站和主域间的信任关系失败 解决方案 0 必须确保故障工作站没有其他的
  • go语言操作数据库

    由于项目需要 xff0c 研究了一下golang操作数据库的基本方式 操作环境在macos上 1 首先连接数据库 mysql u root p 2 选择数据库 use test 3 创建一个我们需要测试的user表 CREATE TABLE
  • Python从Excel表格中读取日期格式遇到的问题及对策

    在从Excel表中读取基金交易明细过程中 xff0c 交易日期的读取一直卡壳 Excel表中的日期是格式良好的2019 10 11 xff0c 但是读取到了Python中就成了43749 0 这一个数字怎么转换成正确的日期格式呢 xff1f
  • 升级笔记本硬件并安装Debian的过程

    前面说过了手头有个Win10笔记本 xff0c 华硕顽石FL8000U型号 xff0c 4G DDR4 2400MHz 威刚内存 xff0c 1T机械硬盘 xff0c 比较鸡肋 xff0c 开机速度比较慢 xff0c Win10登录界面还会
  • 转载:解决wps linux中字体缺失以及文字体名字全是英文的问题

    第一部分 xff1a 字体缺失问题 可能是版权原因 xff0c Linux中许多字体是没有的 xff0c 可以从Windows系统的Windows Fonts文件夹中 xff0c 复制所需的ttf字体文件到Linux系统的 usr shar
  • 无线键鼠接收器配对怎么就那么难?简直就是浪费

    手头无线键鼠套装 无线鼠标等设备比较多 xff0c 基本每台笔记本都有一套 品牌主要以雷柏和罗技为主 xff0c 罗技主要是鼠标 xff0c 此文不涉及 有一套雷柏的无线键鼠套装 xff0c 因为使用多年 xff0c 鼠标失灵已经扔了 xf
  • 亲测有效的下载微信公众号推文视频的一种方法。

    微信公众号推送的内容也有比较精华的 xff0c 特别是一些演讲视频 与其收藏积灰 xff0c 还不如下载保存 以此篇公众号推文为例 xff1a https mp weixin qq com s qkXLmTqBSAox3gx1yJWsNQ
  • Debian8 jessie 的官方源(备份)

    在非常旧的笔记本上安装了Debian8 然后为了安装速度 xff0c 取消了网络镜像源 又因为中文乱码问题 xff0c 没法更新语言包 加了阿里云 清华 网易等等的jessie软件源后 xff0c 都提示有问题 xff0c 怀疑是不是不支持
  • 更改LXDE的语言为中文

    之前给旧笔记本安装了Debian8 43 LXDE嘛 xff0c 运行比较流畅 安装过程中本想选择中文的 xff0c 但是安装界面中旧有中文乱码 xff0c 所以还是选了英语 等装好了系统 xff0c 把apt update 43 upgr
  • nn.ModuleList和nn.Sequential的理解

    nn ModuleList和nn Sequential的出现是为了使代码简洁 nn ModuleList使对于加入其中的子模块 xff0c 不必在forward中依次调用 nn Sequentialt使对于加入其中的子模块在forward中
  • 红米K40 Pro+5G手机出现电量显示故障的修复

    前两天的某天早晨 xff0c 插了一夜充电器的红米手机电量竟然依然是27 xff0c 比昨晚充电时更少了 摸摸手机也凉凉的 xff0c 看来充电器并未工作 然后就心慌慌的带着手机开了省点模式去上班 xff0c 一路上正常 到了单位后 xff
  • Debian安装myBase8.2 Beta-10的各种踩坑

    先去官网下载Linux的压缩包 xff0c 官网下载页面 for Linux amd64 Ver 8 2 Beta 10 tar xz32MB 然后放到home目录下 xff0c 解压 tar xJf myBase tar xz 得到一个M
  • ArchLinux的安装

    安装虚拟机的时候报了一个错误 xff1a this kernel requires an x86 64 cpu but 该原因 xff1a 操作系统是32位 xff0c 虚拟机的系统镜像是64位的虚拟机配置问题电脑没有开启虚拟化 我在安装的
  • iOS 第13课 使用XIB可视化编辑界面

    xcode XIB 基础 0 和android 里面的preview 一样 xff0c 可以看到同时操作添加和修改视图的位置 1 有一点和 android 比较像的是设置主视图 xff0c 我们可以在我们的项目点击 xff0c 然后是 Ma
  • java excel设置row 里面的宽度自适应

    row 61 sheet createRow i 43 1 HSSFCellStyle cellStyle 61 wb createCellStyle cellStyle setWrapText true row setRowStyle c
  • 看完就会----VSCode配置环境(gcc编译器)

    文章目录 一 xff0c 前言二 xff0c 配置的心酸过程1 xff0c 先下载Mingw642 xff0c 解析一下方框的内容3 xff0c 下载解压和配置 三 xff0c 结束语 一 xff0c 前言 当我们下载完了VSCode运行C
  • vue项目中 使用 websocket

    Websocket是一个持久化的协议 xff0c HTTP是不支持持久连接的 Websocket其实是一个新协议 xff0c 跟HTTP协议基本没有关系 xff0c 只是为了兼容现有浏览器的握手规范而已 比如说我们现在有个需求 实时获取一个