vue中的websocket使用 vue websocket聊天
connygpt 2024-10-11 11:57 11 浏览
一、WebSocket 简介
http请求是前端和后端的最常见的交互模式:前端发数据请求,从后端拿到数据后展示到页面中。http协议也有一个最大的缺陷,就是后端没有主动权,不能主动向前端推送数据。 ? 一种新的通信协议应运而生 WebSocket,它最大的特点就是服务端可以主动向客户端推送消息,客户端也可以主动向服务端发送消息,实现了真正的平等。
WebSocket 的其他特点:
? 1.建立在 TCP 协议之上,服务器端的实现比较容易; ? 2.与 HTTP 协议有着良好的兼容性; ? 3.默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。 ? 4,。数据格式比较轻量,性能开销小,通信高效; ? 5.可以发送文本,也可以发送二进制数据; ? 6.没有同源限制,客户端可以与任意服务器通信; ? 7.协议标识符是ws(如果加密,则为wss),服务器网址就是 URL;
二、vue中的websocket使用
2.1 vue中使用 WebSocket 注意项
- 判断浏览器是否支持 WebSocket的协议和访问;
- 建立连接和断开连接的控制,在组件加载的时候 连接websocket,在组件销毁的时候 断开websocket;
- 服务器后端支持,后端接口需要引入 socket 模块,否则不能实现连接;
2.2 vue-socket.io安装和使用
简介
? 我在vue中使用的vue-socket.io库,vue-socket.io 其实是在 socket.io-client 基础上做了一层封装,将 $socket 挂载到 vue 实例上,同时可使用 sockets 对象轻松实现组件化的事件监听,在 vue 项目中使用起来更方便。
安装:
npm i vue-socket.io
引入:
// main.js
import Vue from 'vue'
import store from './store'
import App from './App.vue'
import VueSocketIO from 'vue-socket.io'
Vue.use(
new VueSocketIO({
// 生产环境建议关闭,开发环境打开(在控制台看到socket连接和事件监听的信息)
debug: true,
connection:'http://metinseylan.com:1992',
options:{
// 创建时是否自动连接 我们这里设定为false,在指定页面再开启
autoConnect: false,
// 路径(默认值:/socket.io/)
path: "/my-app/",
// 目前有两种传输方式:HTTP long-polling(可简称:polling)、WebSocket
transports: ['polling'],
// 附加请求头(在服务器端的 socket.handshake.headers 对象中找到)
extraHeaders:{},
},
vuex: {
store,
actionPrefix: 'SOCKET_',// vuex action 前缀
mutationPrefix: 'SOCKET_', // vuex mutation 前缀
},
})
)
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
常见参数 | 类型 | 默认值 | 是否必选 | 描述 |
debug | Boolean | false | 可选择 | 为调试启用日志记录 |
connection | String / Socket.io-client | null | 必要 | Websocket 服务器 url 或 socket.io-client 实例 |
vuex.store | Vuex | null | 可选择 | Vuex store 实例 |
vuex.actionPrefix | String | null | 可选择 | 发出服务器端 vuex 操作的前缀 |
vuex.mutationPrefix | String | null | 可选择 | 发出服务器端 vuex 突变的前缀 |
组件内使用
<template>
<div class="wrap">
<button @click="socketEmit">连接Socket</button>
<button @click="socketSendmsg">发送数据</button>
</div>
</template>
<script>
export default {
data(){
return {
randomId:null,
}
},
methods:{
//连接socket服务器
socketEmit(){
// 打开socket连接
this.$socket.open();
// 订阅事件,testCall 是与后端约定好的名称
this.sockets.subscribe('demoCall', (res) => {
if(res.code == 200 && res.randomId === this.randomId){
console.log('召唤成功')
}
})
},
// 发送测试消息
socketSendmsg(){
this.userid = Math.random();
// testCall 是与后端约定好的名称
this.$socket.emit('demoCall', {
"userid": this.userid,
"deviceId": "123456"
});
},
},
sockets: {
connect: function () {
console.log('连接成功')
},
disconnect: function () {
console.log('断开连接')
},
reconnect: function () {
console.log('重新连接')
},
},
beforeDestroy(){
// 关闭 Socket
this.sockets.unsubscribe('demoCall');
this.$socket.close();
},
}
</script>
简单记录vue的vue-socket.io使用过程,希望对需要的各位有所帮助。
相关推荐
- 3分钟让你的项目支持AI问答模块,完全开源!
-
hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...
- 干货|程序员的副业挂,12个平台分享
-
1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...
- Github标星超200K,这10个可视化面板你知道几个
-
在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...
- 开箱即用的炫酷中后台前端开源框架第二篇
-
#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...
- 搭建React+AntDeign的开发环境和框架
-
搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...
- 基于.NET 5实现的开源通用权限管理平台
-
??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...
- StreamPark - 大数据流计算引擎
-
使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...
- 教你使用UmiJS框架开发React
-
1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...
- 简单在线流程图工具在用例设计中的运用
-
敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...
- 【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单
-
这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...
- 聊聊规则引擎的调研及实现全过程
-
摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...
- 【开源推荐】Diboot 2.0.5 发布,自动化开发助理
-
一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...
- 微软推出Copilot Actions,使用人工智能自动执行重复性任务
-
IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...
- Electron 使用Selenium和WebDriver
-
本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...
- Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具
-
一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)