【问题标题】:Implement SIP instant messaging framework实现SIP即时通讯框架
【发布时间】:2013-06-05 07:34:44
【问题描述】:

我想实现一个适用于 SIP 的即时消息传递框架。 我有 SIP 客户端和一个元素,该元素将从客户端获取所有消息,并处理它们并将它们转发给其他 sip 客户端。

客户端和管理元素将拥有自己的私有协议(相互“对话”),这些协议将在 SIP 消息中传递(例如在有效负载中)。

我不知道我需要什么“管理元素”。它应该是 SIP 客户端还是 SIP 服务器? 我的想法是我将拥有一个 SIP 客户端,它将接收所有 SIP 消息,使用私有协议解析它们,并将其转发给其他客户端。 因此,从管理系统的角度来看,它是一种“服务器”,而从 SIP 的角度来看,它是一种客户端。

我正在用 Java 实现这个“元素”,但现在它并不重要。 我很乐意得到一些指导来帮助我。

【问题讨论】:

    标签: java message sip sip-server


    【解决方案1】:

    对于您的问题,我将首先在 2 个模型之间进行选择:

    1- 您的 IM 客户端与 IM 服务器(或调度程序或“元素”或其他任何名称)建立会话(SIP 对话),并在它们运行或登录时保持活动状态。在此在这种情况下,SIP 对话始终是从 IM 客户端到 IM 服务器建立的,因此前者可以称为 SIP 客户端,而后者可以称为 SIP 服务器。然后使用对话中间请求在该对话上双向传递 IM 消息。如果您知道 IM 服务器可以从任何地方路由,但客户端可能位于专用网络中,这可能是一个好主意。

    2- 一种更对称的方法是没有正在进行的对话。每当任何一个实体(IM 客户端或 IM 服务器)想要向另一个发送消息时,它只使用一次性的对话外 SIP 消息。在这种情况下,两端都需要实现 SIP UA 客户端和 UA 服务器功能。这在任何情况下都可能是首选解决方案,因为维护 IM 客户端和服务器之间的对话似乎是个坏主意,但路由不是问题。

    当然,也有中途解决方案,看起来像第二个,但不是每条消息都单独发送,在对话上下文之外,可以建立一个临时对话来发送消息(并避免例如,重新验证每条消息),直到某个不活动计时器关闭对话框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多