记录一次解决问题的思路:联调traccar的websocket协议

记一次联调traccar的websocket协议

因为对websocket协议并不很熟悉,
首先我明确了方向是:
如果我要解决这个websocket协议的对接,那么我一定是基于自己对websocket协议的通信流程很熟悉的前提。
也就是先得让我先去学习websocket的体系结构和工作流程,而不是依靠自己的臆想。

1.初级模型:初步学习websocket的核心体系结构和工作流程

通过文章 WebSocket 协议完整解析,掌握ws的核心体系结构和工作流程。

2.迭代模型:充分利用正确数据来对ws工作流程进行具体画像

与前端兄弟yangyg收集“前、后端成功通信的ws”的数据。
为了降噪,将数据通过postman进行模拟。
yangyg非常有耐心,对本地、开发、测试的数据分别进行提取。

最终我俩找到了一个成功的案例。
于是,就对ws的工作流程有了一个成功的具体画像。
在这里插入图片描述

3.回头验证:有了模型的具体画像,就可以对失败的ws连接进行剖析

通过对比浏览器和postman请求的数据,我们定位到了,可能是由于没有捕获Cookie的原因。
在这里插入图片描述

4.聚焦问题:将问题转向为Cookie转发的问题

最后发现是因为traccar:8082默认将Cookie配置为path=“/”,而导致nginx配置的static:80项目无法获取到Cookie的值。
于是,最终的问题就转变为了nginx的配置问题了。
结合文章nginx代理WebSocket无法访问ws//WebSocket/xxxx
在这里插入图片描述
最终的解决方案就是:
不再直接使用8082端口,而是使用"host:80/项目名/"方式,保证traccar的cookie能够在“/”中起作用。
同时,为了让ws协议和http协议分开起作用,就使用不同的项目名来隔离转发规则。

5.最后

通过与yangyg兄弟的和谐合作,我们解决了这个很棘手的问题。

花费时间
定位关键问题:10:37-12:00,13:30-14:29,接近150分钟。
Nginx配置的细节修正问题:14:30-16:50,接近140分钟。
总共花费290分钟,接近5小时。

非常感谢yangyg兄弟,也非常期待进行下一次合作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值