2、SIP应用服务开发: 注册心跳管理

SIP协议的本质是协商,基于这种通讯协议,通讯双方须要直接或者间接得到对方的接口(通常就是地址和端口)。所以,须要在系统中保存和管理各类设备的接口信息,以便能完成正常的通讯。在GB/T 28181中,这种需求经过SIP协议的REGISTERMESSAGE消息来实现。网络

其中,REGISTER消息用来进行设备或者系统(下级平台)的注册处理,其携带事先约定的信息经过挑战式注册(两次注册:第一次上级平台回复401消息并携带认证参数;第二次注册携带处理后的认证参数)的方式完成接口信息提交(第二个REGISTER消息中的CONTACT字段携带下级平台的接口地址和端口)。这里,在最后一条200 OK消息中,上级平台会携带当前的系统时间,用如下级平台的校时处理(但,设备不必定具有系统校时功能,可采用DVR或者NVR的间接校时)。国标中对于注册间隔(即过时注册时间)没有作明确的规定,可是,通常取expires=3600(秒),即一小时。此外,刷新注册(即会话内注册),必须保持call-id, from/to tag的一致,不然上级平台会将注册消息断定为初始注册(替代原有注册,可能致使上下线的操做)。只有当下级平台感知本身离线的状况下(注册消息上级回复403或者心跳消息上级回复3次408),才应发起初始注册。code

若是在规定的注册间隔中,上级平台没有接收到下级平台的刷新注册消息,那么会致使下线操做。为了不网络延迟和处理带来的延迟,下级平台应适当提早刷新注册的时间(例如,expires=3600时每隔3590秒注册一次)。注:不可太过频繁的进行注册(例如,1分钟注册一次),不然可能会被有黑名单的上级平台屏蔽致使一段时间没法正常通讯,这是上级平台的保护措施。接口

一样,心跳消息用于更细粒度的检测下级平台或者设备的健康情况。心跳消息通常以1分钟为时间间隔,由下级平台或者设备向上级平台发送。这里,若是是设备,而且包含子设备,例如,DVR或者NVR,其子设备因为不直接和平台进行注册,状态应由父设备向平台报送,采用心跳消息中扩展的INFO字段来完成(每次都携带离线子设备列表在父设备心跳当中,没有携带的子设备默认在线)。心跳消息用来检测离线的默认规则是3次心跳回复408消息,即3分钟内连续3次心跳都没有成功即断定离线。资源

注册心跳是GB/T 28181的基础功能,按照协议进行正常的注册和心跳是其余功能的保障。设备或者平台频繁的上下线会致使一系列的重复操做,浪费大量的计算资源。目前,也有意见是取消REGISTER消息,直接使用心跳MESSAGE来完成该功能,正在商讨中。基础

相关文章
相关标签/搜索