相关文章推荐
打盹的课本  ·  The WebSocket API ...·  1 周前    · 
有腹肌的油条  ·  C++ ...·  1 年前    · 
开朗的路灯  ·  java 导出文件中文名乱码 - CSDN文库·  1 年前    · 
痴情的铁板烧  ·  使用 RANK 限制搜索结果 - SQL ...·  1 年前    · 
坚强的山楂  ·  Java插件式开发 动态加载Jar - ...·  1 年前    · 
爱看书的钥匙  ·  利用verilog将二进制码转换为十进制BC ...·  2 年前    · 
Code  ›  通过websocket和三方平台建立连接后断网导致无法再次链接如何修复?开发者社区
websocket
https://cloud.tencent.com/developer/article/1803065
逼格高的小蝌蚪
1 年前
TSINGSEE青犀视频

通过websocket和三方平台建立连接后断网导致无法再次链接如何修复?

原创
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
TSINGSEE青犀视频
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 通过websocket和三方平台建立连接后断网导致无法再次链接如何修复?

通过websocket和三方平台建立连接后断网导致无法再次链接如何修复?

原创
作者头像
TSINGSEE青犀视频
修改 于 2021-03-17 17:51:50
1.7K 0
修改 于 2021-03-17 17:51:50
举报
文章被收录于专栏: TSINGSEE青犀视频 TSINGSEE青犀视频

很多情况下我们常用的协议是http协议,但是http存在一个明显的缺点:通信只能由客户端发起,所以在编译视频综合管理平台这类项目时,当涉及到服务端与客户端的双向通信时,就需要通过另一种协议来实现,即websocket协议。websocket协议下,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。

在我们采用EasyCVR安防监控智能分析系统对接第三方平台时,当通过websocket长连接和三方平台建立连接,此时突然断网,或者是三方服务崩溃重启,也就是说连接突然中断后,会导致建立的websocket链接无法再次实现重连,程序消息一直被阻塞住。

程序启动时,打印的链接状态如下:

第三方服务端处于请求状态:

当服务端重启或断链之后,客户端出现崩溃,程序阻塞的情况:

此时客户端代码建立连接代码如下:

//ping
upaliServer.ping()
writeFunc := func(params []byte) {
       upaliServer.WriteMessage(websocket.BinaryMessage, params)
cseqFunc := func() uint32 {
       return RequestCstq.getValue()
//初始化api
messapi.Init(writeFunc, cseqFunc)

这段代码实际还是不够完善的,因此此处我们首先定义链接url,再建立连接过后启动ping监听方法,随后再链接断掉之后循环尝试和服务端建立连接,如果失败,则等待一段时间后再次尝试,成功之后退出尝试建立连接的进程。

log.Printf("connecting to %s", s.url.String())
wsktDlr := websocket.Dialer{TLSClientConfig: &tls.Config{RootCAs: nil, InsecureSkipVerify: true}}
c, hrsp, err := wsktDlr.Dial(s.url.String(), nil)
if err != nil {
       log.Printf("dial err %s", err.Error())
       time.Sleep(time.Second * 10)
       continue
if hrsp == nil && hrsp.StatusCode != 200 {
 
推荐文章
打盹的课本  ·  The WebSocket API (WebSockets) - Web APIs | MDN
1 周前
有腹肌的油条  ·  C++ 批量读写txt文件_c++批量读取文件-CSDN博客
1 年前
开朗的路灯  ·  java 导出文件中文名乱码 - CSDN文库
1 年前
痴情的铁板烧  ·  使用 RANK 限制搜索结果 - SQL Server | Microsoft Learn
1 年前
坚强的山楂  ·  Java插件式开发 动态加载Jar - 星耀寂夜 - 博客园
1 年前
爱看书的钥匙  ·  利用verilog将二进制码转换为十进制BCD码_verilog进制转换函数_neufeifatonju的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号