vue3中websocket用法
1.0 认识 websocket
#1.0.1 什么是 websocket
和 http 协议类似,websocket 也是是一个网络通信协议,是用来满足前后端数据通信的。
#1.0.2 websocket 相比于 HTTP 的优势
HTTP 协议:客户端与服务器建立通信连接之后,服务器端只能被动地响应客户端的请求,无法主动给客户端发送消息。
websocket 协议:客户端与服务器建立通信连接之后,服务器端可以主动给客户端推送消息了!!!
#1.0.3 websocket 主要的应用场景
需要服务端主动向客户端发送数据的场景,比如我们现在要做的智能聊天
#1.0.4 HTTP 协议和 websocket 协议对比图
1.1 vue3组合api中socket.io-client 的基本使用
#1.1.1 安装和配置 socket.io-client
参考 socket.io-client 的官方文档进行配置和使用
在项目中运行如下的命令,安装 websocket 客户端相关的包:
npm i socket.io-client@4.0.0 -S# 如果 npm 无法成功安装 socket.io-client,可以尝试用 yarn 来装包 # yarn add socket.io-client@4.0.0
在
xx.vue
组件中,从socket.io-client
模块内按需导入io
方法:// 按需导入 io 方法:调用 io('url') 方法,即可创建 websocket 连接的实例 import { io } from 'socket.io-client'
事先setup中定义变量
socket
,用来接收io()
方法创建的 socket 实例:let socket = null
#1.1.2 创建和销毁 socket 实例
在
xx.vue
组件的setuponMounted
生命周期函数中,创建 websocket 实例对象:onMounted(() => {// 创建客户端 websocket 的实例socket = io('ws://www.liulongbin.top:9999') })
在 xx
.vue
组件的setup onBeforeUnmount生命周期函数中,关闭 websocket 连接并销毁 websocket 实例对象:// 组件被销毁之前,清空 sock 对象 onBeforeUnmount(() => {// 关闭连接socket.close()// 销毁 websocket 实例对象socket = null })
#1.1.3 监听连接的建立和关闭
在
xx.vue
组件的setup onMounted 生命周期函数中,调用socket.on('connect', fn)
方法,可以监听到 socket 连接成功的事件:// 建立连接的事件 socket.on('connect', () => console.log('connect: websocket 连接成功!'))
在
xx.vue
组件的created
生命周期函数中,调用socket.on('disconnect', fn)
方法,可以监听到 socket 连接关闭的事件:// 关闭连接的事件 socket.on('disconnect', () => console.log('disconnect: websocket 连接关闭!'))
#1.1.4 接收服务器发送的消息
在
Chat.vue
组件的 setup onMounted 生命周期函数中,调用socket.on('message', fn)
方法,即可监听到服务器发送到客户端的消息:// 接收到消息的事件 socket.on('message', msg => console.log(msg))
将服务器发送到客户端的消息,存储到 xx
.vue
组件的list
数组中:// 接收到消息的事件 socket.on('message', msg => {// 把服务器发送过来的消息,存储到 list 数组中this.list.push({ name: 'xs', msg }) })
#1.1.5 向服务器发送消息
客户端调用
socket.emit('send', '消息内容')
方法,即可向 websocket 服务器发送消息:// 提交按钮的点击事件处理函数 const send = () => {// 如果输入的聊天内容为空,则 return 出去if (!this.word) return// 向服务器发送消息socket.emit('send', this.word)// 将用户填写的消息存储到 list 数组中this.list.push({ name: 'me', msg: this.word })// 清空文本框中的消息内容this.word = '' }
vue3中websocket用法相关推荐
- Vue watch监听详解,一篇文章彻底搞懂Vue2/Vue3中的watch监听
watch监听在vue2和vue3中的用法详解(全) Vue2中的watch用法 Vue3中的watch用法 首先写一个vue页面 <template><div><h1& ...
- Vue3中TSX和h函数的用法
Vue3中TSX的用法 补充:(jsx用法)[https://github.com/vuejs/babel-plugin-jsx] (vue3中渲染函数&JSX)[https://cn.vue ...
- 回顾Vue2 开启 Vue3 中的 watch 新用法
前言 Vue 3.0出来之后,我一直在不断的尝试学习和接受新的概念.没办法,作为一个前端开发,并且也不是毕业于名校或就职于大厂,只有不断的培养学习能力,持之以恒的学习才能我这种普通前端开发者提高一丢丢 ...
- Vue3和element plus 中ref用法元素实例操作
在 vue3 中,组件的逻辑可以放在 setup 函数里面,但是 setup 中不再有 this,所以 vue2 中的 this.$refs 的用法在 vue3 中无法使用. 用法是: element ...
- 剖析Vue3中setup()的用法(持续更新中)
一.setup的特性及作用 可以确定的是 Vue3.0 是兼容 Vue2.x 版本的 也就是说我们再日常工作中 可以在 Vue3 中使用 Vue2.x 的相关语法 但是不建议这样写. Vue3 的一大 ...
- 【VideoJs】初识videojs video.js 视频播放器的基本使用 videojs基础用法 videojs视频播放器 vue3中使用videojs
videojs介绍 免费,开源 插件多 可自定义 [推] 虽然,但是Videojs算好了,但我觉得有点杂,特别是文档与插件,且自定义插件有点困难,也可能是我比较菜吧 相比之下,我还是强烈推荐 [Xgp ...
- 前端之vue3使用WebSocket
vue3使用WebSocket WebSocket WebSocket说明 WebSocket图示 客户端使用WebSocket vue3中, 客户端使用WebSocket步骤 更多方法 WebSoc ...
- 中input怎么接受后台传值_[vue3]如何在vue3中优雅地使用vmodel?
Vue中的数据绑定 绑定数据有三种方式: 插值,也就是{{name}}的形式,以文本的形式和实例data中对应的属性进行绑定 v-bind v-model v-bind eg:v-bind:class ...
- vue3 中使用动画技术
vue3 中使用动画技术 作者: jcLee95 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm=1001.21 ...
最新文章
- 特征驱动开发 Feature-Driven Development - FDD
- java构造函数的执行顺序,java构造函数和初始化函数的执行顺序
- idea2019.3.3不能热部署_复盘曼联2-1热刺:3大战术力助索肖自救,1人成“红魔”复苏关键...
- ECharts绘制中国地图、广西地图
- DelayQueue
- 名利双收的公益创业,“汇新杯”响应时代召唤助力公益创业
- 在quartus II15.0中调用Modelsim进行时序仿真时出现Rerun the EDA Netlist Writer的原因
- idea卸载不干净怎么办_Office卸载不干净怎么办?我想你一定需要Mac卸载Office的图文教程!...
- 家务计算机配置,笔记本电脑佳配置是什么样的
- 1.11.ARM的37个寄存器详解
- c++学习:多线程;顺序容器;智能指针
- 网易云获取带有时间轴的歌词
- 安装archlinux+cinnamon笔记
- 想要实验结果准确?玻璃器皿清洗方法和要点你可得知道!
- 电脑怎么下mcjava版_我的世界pc java下载
- python flash_Python Flask使用flash()方法
- JS实现简易ATM机
- Git(码云-开源中国)入门小知识
- ai作文批改_网易有道词典上线AI作文批改功能 可自动批改雅思、四六级英语作文...
- error#10052:could not checkout FLEXlm license