在Websockets上实现真正的SIP通信

6

我正在尝试为一个使用sipml5制作的HTML sip客户端实现sip服务器连接。在我的研究中,我发现了基于web-sockets的SIP,这对我可能有用,但是我不确定通过SIP over web-sockets连接到兼容服务器的用户代理是否能够成功地呼叫使用不兼容服务器(即从SIP over web-sockets呼叫真正的SIP)的用户。

我知道webrtc2sip可用于连接传统网络,但如果可能的话,我宁愿避免使用另一个代理。因此,是否可能使用SIP over web-sockets连接到兼容的SIP服务器,然后从该用户代理向不支持SIP over web-sockets的其他用户代理进行呼叫而不使用网关?


1
您可以使用支持传统SIP(通过TCP/UDP)和WebSockets的SIP服务器来实现网关功能。一个启用该技术的例子是Mobicents SIP Servlets(请参见https://code.google.com/p/sipservlets/wiki/Welcome?tm=6)。 - yotommy
制作网关是否只需通过支持双方的代理连接用户代理,还是需要修补/媒体编码等特定标头? - awriis
这取决于您的端点(sipml5和其他未指定的SIP UA)的互操作性。明确一点,您需要在Mobicents SIP Servlets中实现代理。毕竟,网关功能必须在某个地方完成。 - yotommy
3个回答

3
你说得对,Websockets上的SIP是一项草案,而不是规范。我不知道有多少SIP供应商支持这个草案。
可能的解决方案是真正的websocket-SIP网关。例如,Flashphoner Web Call Server实现了一个网关,通过Websockets与浏览器通信,并通过SIP(TCP和UDP)与SIP服务器通信。因此,它与支持RFC3261标准SIP规范的任何服务器兼容。
简要的信令方案如下: 浏览器 - [Websockets] - Web Call Server - [SIP TCP,UDP] - 任何SIP服务器 简要的流媒体方案如下: 浏览器 - [WebRTC = SRTP,DTLS,ICE,STUN ] - Web Call Server - [RTP UDP] - 任何SIP/RTP服务器

1

另一种方式是使用Kamailio,因为它可以理解SIP和WS SIP。

当您说“实现SIP服务器”时,您是指简单的注册器或代理服务器,还是需要CAL控制逻辑/出席等其他功能?

在所有情况下,Kamailio都能满足所有要求,而且它是开源的。


1
Mobicents SIP Servlets示例已经提供一个B2BUA应用程序,为您处理此过程。媒体是点对点的(或通过TURN中继服务器),但如果您需要桥接到媒体服务器,则确实可以打补丁SDP Body以使每个方的媒体通过媒体服务器(前提是它支持WebRTC,DTLS-SRTP等相关编解码器)添加会议,录制等功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接