相关文章推荐
焦虑的柳树  ·  大小脑关键神经受体结构首次揭示,为理解运动控 ...·  1 年前    · 
难过的打火机  ·  李常青-专任教师-北理工经济学院·  1 年前    · 
失落的木瓜  ·  樱花动漫·  1 年前    · 
帅呆的帽子  ·  职位详情·  1 年前    · 
仗义的竹笋  ·  身体4个部位变黑,说明你肝不好!护肝养肝就要 ...·  3 年前    · 
小百科  ›  通过websocket和三方平台建立连接后断网导致无法再次链接如何修复?开发者社区
websocket
逼格高的小蝌蚪
2 年前
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 {
 
推荐文章
焦虑的柳树  ·  大小脑关键神经受体结构首次揭示,为理解运动控制、学习与记忆 ...
1 年前
难过的打火机  ·  李常青-专任教师-北理工经济学院
1 年前
失落的木瓜  ·  樱花动漫
1 年前
帅呆的帽子  ·  职位详情
1 年前
仗义的竹笋  ·  身体4个部位变黑,说明你肝不好!护肝养肝就要这样做_手机新浪网
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号