GB28181基本註冊流程整理

1、基本註冊流程

在這裏插入圖片描述

2、注意事項

  • 設備註冊之後,在註冊有效期到來時需要刷新註冊;
  • 刷新註冊和首次註冊的註冊ID必需要一致(exoisp框架中註冊ID一致則Call-ID會一致),否則級聯會出現異常);
  • 默認的註冊有效期是3600s。在有效期內,設備需要每30S(默認間隔)發送keeplive MESSAGE到服務器,服務器若連續3次沒有收到設備的keeplive消息,則認爲設備掉線;

3、流程

《1》、首次註冊流程抓包(eXosip_register_build_initial_register)
在這裏插入圖片描述

《2》、註冊刷新抓包
在這裏插入圖片描述

調用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, &reg);
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, &reg);  /* 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、一些字段解釋

在這裏插入圖片描述

6、 參考

[1]、GBT 28181-2016公共安全視頻監控聯網系統信息傳輸、交換、控制技術要求.pdf
[2]、exoisp註冊實現demo
[3]、認證字段解釋參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章