GOFLY在线客服-使用reconnect-websocket.js实现断线自动重连机制-GO语言实现开源独立部署客服系统...

本文主要是介绍GOFLY在线客服-使用reconnect-websocket.js实现断线自动重连机制-GO语言实现开源独立部署客服系统...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发websocket应用,最难处理的就是断线后的自动重连

现在GOFLY在线客服使用reconnect-websocket.js就可以非常简单轻松的实现断线重连

reconnect-websocket.js的机制是,当连接websocket服务的过程中,如果连不上,会自动进行指定次数的重试

如果连接成功后回调onOpen方法以后,会把重试次数清空,因此如果是连接已经成功,但是后端主动关闭连接,这个库会不断的进行连接

这个问题也一并处理了下

核心代码在下面,是cdn引入的vue以及element-ui ,GOFLY也是这样的前端架构

<html>
<head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width,initial-scale=1.0" /><!-- Import style --><linkrel="stylesheet"href="https://cdn.jsdelivr.net/npm/element-plus/dist/index.css"/><!-- Import Vue 3 --><script src="https://cdn.jsdelivr.net/npm/vue@next"></script><!-- Import component library --><script src="https://cdn.jsdelivr.net/npm/element-plus"></script>
</head>
<body>
<div id="app"><el-button>${ message }</el-button>
</div>
<script src="../../js/reconnect-websocket.js"></script>
<script>const App = {compilerOptions: {delimiters: ['${', '}'],comments: true},data() {return {message: "Hello Element Plus",apiHost:"ws://gofly.sopans.com/ws_visitor?visitor_id=efccd385-cdfe-41ed-8dfd-ab1faa732996&to_id=taoshihan",websocket:null,websocketOpenNum:0,websocketMaxOpenNum:20,websocketClosed:true,};},methods: {//初始化websocket连接initWebsocketConn() {this.websocket = new ReconnectingWebSocket(this.apiHost,null,{debug:true});//创建Socket实例this.websocket.onmessage = this.onMessage;this.websocket.onopen = this.onOpen;this.websocket.onerror = this.onError;this.websocket.onclose = this.onClose;},onOpen(){console.log("ws:onOpen");if(this.websocketOpenNum>=this.websocketMaxOpenNum){this.websocket.close();}this.websocketOpenNum++;this.websocketClosed=false;this.ping();},onMessage(){console.log("ws:onMessage");},onError(){console.log("ws:onError");},onClose(){console.log("ws:onClose");this.websocketClosed=true;},//心跳包ping(){var _this=this;setInterval(function () {if(!_this.websocketClosed){_this.websocket.send("ping");}},10000);},},//属性初始化created(){this.initWebsocketConn();}};const app = Vue.createApp(App);app.use(ElementPlus);app.mount("#app");
</script>
</body>
</html>

这篇关于GOFLY在线客服-使用reconnect-websocket.js实现断线自动重连机制-GO语言实现开源独立部署客服系统...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819721

相关文章

Golang实现基于角色的访问控制(RBAC)的项目实践

《Golang实现基于角色的访问控制(RBAC)的项目实践》基于角色的访问控制(RBAC)是一种安全机制,通过角色来管理用户权限,本文介绍了一种可落地、易扩展的GolangRBAC实现方案,具有一定... 目录一、RBAC 核心模型设计二、RBAC 核心逻辑实现RBAC 管理器定义基础 CRUD:添加用户

Python使用Spire.PDF实现为PDF添加水印

《Python使用Spire.PDF实现为PDF添加水印》在现代数字化办公环境中,PDF已成为一种广泛使用的文件格式,尤其是在需要保持文档格式时,下面我们就来看看如何使用Python为PDF文件添加水... 目录一、准备工作二、实现步骤1. 导入必要的库2. 创建 PdfDocument 对象3. 设置水印

python在word中插入目录和更新目录实现方式

《python在word中插入目录和更新目录实现方式》文章主要介绍了如何在Word文档中插入和更新目录,并提供了具体的代码示例,插入目录时,需要使用`TablesOfContents`对象,并设置使用... 目录1、插入目录2、更新目录总结1、插入目录需要用到对象:TablesOfContents目录的

PostgreSQ数据库实现在Windows上异地自动备份指南的详细教程

《PostgreSQ数据库实现在Windows上异地自动备份指南的详细教程》这篇文章主要为大家详细介绍了如何在Windows系统上实现PostgreSQL数据库的异地自动备份,文中的示例代码讲解详细,... 目录前期准备实现步骤步骤一:创建备份脚本步骤二:配置免密登录(可选但推荐)步骤三:设置任务计划程序步

R语言中的正则表达式深度解析

《R语言中的正则表达式深度解析》正则表达式即使用一个字符串来描述、匹配一系列某个语法规则的字符串,通过特定的字母、数字及特殊符号的灵活组合即可完成对任意字符串的匹配,:本文主要介绍R语言中正则表达... 目录前言一、正则表达式的基本概念二、正则表达式的特殊符号三、R语言中正则表达式的应用实例实例一:查找匹配

Java中的ConcurrentBitSet使用小结

《Java中的ConcurrentBitSet使用小结》本文主要介绍了Java中的ConcurrentBitSet使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、核心澄清:Java标准库无内置ConcurrentBitSet二、推荐方案:Eclipse

Go语言结构体标签(Tag)的使用小结

《Go语言结构体标签(Tag)的使用小结》结构体标签Tag是Go语言中附加在结构体字段后的元数据字符串,用于提供额外的属性信息,这些信息可以通过反射在运行时读取和解析,下面就来详细的介绍一下Tag的使... 目录什么是结构体标签?基本语法常见的标签用途1.jsON 序列化/反序列化(最常用)2.数据库操作(

Java中ScopeValue的使用小结

《Java中ScopeValue的使用小结》Java21引入的ScopedValue是一种作用域内共享不可变数据的预览API,本文就来详细介绍一下Java中ScopeValue的使用小结,感兴趣的可以... 目录一、Java ScopedValue(作用域值)详解1. 定义与背景2. 核心特性3. 使用方法

spring中Interceptor的使用小结

《spring中Interceptor的使用小结》SpringInterceptor是SpringMVC提供的一种机制,用于在请求处理的不同阶段插入自定义逻辑,通过实现HandlerIntercept... 目录一、Interceptor 的核心概念二、Interceptor 的创建与配置三、拦截器的执行顺

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e