GB28181基本注册流程整理

1、基本注册流程

GB28181基本注册流程整理_第1张图片

2、注意事项

  • 设备注册之后,在注册有效期到来时需要刷新注册;
  • 刷新注册和首次注册的注册ID必需要一致(exoisp框架中注册ID一致则Call-ID会一致),否则级联会出现异常);
  • 默认的注册有效期是3600s。在有效期内,设备需要每30S(默认间隔)发送keeplive MESSAGE到服务器,服务器若连续3次没有收到设备的keeplive消息,则认为设备掉线;

3、流程

《1》、首次注册流程抓包(eXosip_register_build_initial_register)
GB28181基本注册流程整理_第2张图片

《2》、注册刷新抓包
GB28181基本注册流程整理_第3张图片

调用eXosip_register_build_register来创建刷新注册的信息,需使用和注册时一致的注册ID,构建出的刷新消息自己会加上鉴权消息。

注意:刷新注册发出后服务器端不会像注册时发送401响应,而是直接回复200 OK响应

4、demo

《1》、注册

eXosip_lock(g_context_eXosip);
int register_id = eXosip_register_build_initial_register(g_context_eXosip, from, proxy, contact_str, expires, ®);
if (0 > register_id)
{
    eXosip_unlock(g_context_eXosip);
    cout << "eXosip_register_build_initial_register error: " << ret;
    usleep(10*SECOND);   //10s
    continue ;
}


ret = eXosip_register_send_register(g_context_eXosip, register_id, reg);
eXosip_unlock(g_context_eXosip);
if (0 != ret)
{
    cout << "eXosip_register_send_register with error: " << ret;
}

eXosip_register_build_initial_register调用成功可返回注册ID,注册刷新用,也可以在事件处理流程收到远程的200 OK中获得,如果注册成功,两者以一样的。
200 ok处获取如下:
在这里插入图片描述

《2》、注册刷新

/* 注册刷新 */
eXosip_lock(g_context_eXosip);
int ret = eXosip_register_build_register(g_context_eXosip, m_register_id, expires, ®);  /* m_register_id 首次注册保存下来的注册ID */
if(ret != OSIP_SUCCESS)
{
     cout << "eXosip_register_build_register fail !!! " ;
     eXosip_unlock(g_context_eXosip);
     sleep(10);   //10s
      continue;
}

ret = eXosip_register_send_register(g_context_eXosip, m_register_id, reg);
if(ret != OSIP_SUCCESS)
{
   cout << "eXosip_register_send_register fail !!! " ;
}

eXosip_unlock(g_context_eXosip);

5、一些字段解释

GB28181基本注册流程整理_第4张图片

6、 参考

[1]、GBT 28181-2016公共安全视频监控联网系统信息传输、交换、控制技术要求.pdf
[2]、exoisp注册实现demo
[3]、认证字段解释参考

你可能感兴趣的:(GB28181)