1 2024-6-13
siyuan edited this page 2024-06-13 19:05:46 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

完成的任务

继续增加sdserver的日志了解项目代码逻辑优化部分部分代码。观看GBsdk项目代码运行example并将安卓模拟器注册上去。

学到了什么

  1. 向云端发送消息和接受的具体流程其中在项目启动时会启用两个协程writer和reader分别监听读写当发送消息时先将消息内容通过chan发送到writer中然后通过chan监听响应消息等待时长最多30s消息在reader中通过chan传递回来然后回传消息。

  2. 首先了解项目的启动流程先配置本地的redis在配置sip以及级联内容在初始化各种数据库并将数据库的内容信息cache下来这样做保证了项目的稳定性即使redis暂时掉线也不影响项目的运行。服务端要及时的获取设备的上线下线以及设备的状态信息等以便管理和控制设备所以在项目中使用了各种回调函数用于获取设备的状态消息。之后注册了路由包括REGISTERMESSAGE等用于和设备交互。

  3. 在了解到了项目的启动流程后,就要思考服务端是怎么获取到设备的通道信息的呢? 通过抓包了解了设备的注册和注销是使用REGISTER消息通知的通过Expire参数来控制设备的注销和注册其中0是注销兼容海康。设备在注册时我发现第一次发送的报文中header不带有authentication 字段导致认证失败sdk发送401,表示未鉴权之后设备带有authentication 字段进行二次注册,注册成功。在查阅相关文档之后发现这是正常的注册流程。