0

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

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

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

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

4

1 回答 1

0

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

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

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

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

于 2013-06-05T15:38:59.333 回答