实现SIP即时消息框架

时间:2013-06-05 07:34:45

标签: java message sip sip-server

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

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

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

我在Java中实现这个“元素”,但现在并不重要。 我很乐意为你提供帮助。

1 个答案:

答案 0 :(得分:0)

关于你的问题,我首先要选择2个模型:

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

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

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