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,并将安卓模拟器注册上去。
向云端发送消息和接受的具体流程,其中在项目启动时,会启用两个协程writer和reader,分别监听读写,当发送消息时,先将消息内容通过chan发送到writer中,然后通过chan监听响应消息,等待时长最多30s,消息在reader中通过chan传递回来,然后回传消息。
首先了解项目的启动流程,先配置本地的redis,在配置sip以及级联内容,在初始化各种数据库,并将数据库的内容信息cache下来,这样做保证了项目的稳定性,即使redis暂时掉线,也不影响项目的运行。服务端要及时的获取设备的上线,下线,以及设备的状态信息等,以便管理和控制设备,所以在项目中使用了各种回调函数,用于获取设备的状态消息。之后注册了路由,包括REGISTER,MESSAGE等,用于和设备交互。
在了解到了项目的启动流程后,就要思考服务端是怎么获取到设备的通道信息的呢? 通过抓包,了解了设备的注册和注销是使用REGISTER消息通知的,通过Expire参数来控制设备的注销和注册,其中0是注销(兼容海康)。设备在注册时,我发现第一次发送的报文中,header不带有authentication 字段,导致认证失败,sdk发送401,表示未鉴权,之后设备带有authentication 字段进行二次注册,注册成功。在查阅相关文档之后发现这是正常的注册流程。
Deleting the wiki page "2024-6-13" cannot be undone. Continue?