簡體   English   中英

實施SIP即時消息框架

[英]Implement SIP instant messaging framework

我想實現一個在SIP上工作的即時消息框架。 我有SIP客戶端和一個將從客戶端獲取所有消息並處理它們並將其轉發給其他sip客戶端的元素。

客戶端和管理元素將具有自己的私有協議(彼此“交談”),該私有協議將在SIP消息內部(例如,在有效負載中)傳遞。

我不知道我需要什么“管理元素”。 它應該是SIP客戶端還是SIP服務器? 我當時的想法是,我將擁有一個SIP客戶端,該客戶端將接收所有SIP消息,使用專用協議解析它們,然后將其轉發給其他客戶端。 因此,就系統管理而言,它將是一種“服務器”,而對於SIP,它將是一種客戶端。

我正在用Java實現此“元素”,但現在實際上並不重要。 我很樂意為您提供指導。

對於您的問題,我將從兩種模型之間進行選擇開始:

1-您的IM客戶端與IM服務器(或調度程序或“元素”或任何稱為它的東西)建立會話(SIP對話框),並在它們運行或登錄期間保持活動狀態。在這種情況下,從IM客戶端到IM服務器始終建立SIP對話框,因此前者可以稱為SIP客戶端,而后者可以稱為SIP服務器。 然后,使用中間對話請求在該對話框上雙向傳送IM消息。 如果您知道IM服務器可從任何地方路由,但客戶端很可能位於專用網絡中,則這可能是一個好主意。

2-更對稱的方法是沒有正在進行的對話。 每當一個實體(IM客戶端或IM服務器)想要向另一個實體發送消息時,它僅使用一次性的非對話SIP消息。 在這種情況下,兩端都需要實現SIP UA客戶端和UA服務器功能。 在任何情況下,當維護IM客戶端和服務器之間的對話框似乎是一個壞主意,但路由都不是問題時,這可能是首選的解決方案。

當然,也有一種半途而廢的解決方案,看起來像第二種解決方案,但不是在對話框上下文之外單獨發送每條消息,而是可以建立一個臨時對話框來發送消息(並避免重新驗證)例如每條消息),直到某個不活動計時器將對話框關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM