SIP与WebRTC有什么必然联系?
WebRTC与上文所提到的这些特性都紧密相关。与SIP一样,WebRTC用来支持两个终端之间的媒体会话建立。与SIP一样,一旦信令完成,WebRTC连接就会使用实时传输协议(RTP)在媒体平面传输数据。与SIP一样,WebRTC使用SDP来对自身进行描述。
但是在两个关键点上二者存在差别:
-
1 WebRTC在信令平面上不对SIP消息的使用进行授权。事实上,WebRTC根本不会选择使用SIP或者任何其他信令协议。SDP消息的实际信令(发送/接收)被刻意地留给了应用自身。对于SIP,相反,定义了非常明确地消息格式,封装和发送SDP消息必须使用这种特定的格式用来创立通话。
-
2 WebRTC在媒体平面上授权了几种SIP可选特性的使用。它们是:
抛开这些不同之处的好坏不提,它们之间的区别是实际存在的,所以我们必须注意其间的差别。让我们单独的来看这两项。
信令平面
基于现存SIP基础不会选择其他信令协议的这个假设,WebRTC这边必须知道如何使用SIP。有两个方法:
-
·使用SIP作为你的WebRTC应用的信令堆栈。
-
·在你的WebRTC应用中使用其他信令解决方案,但是需要加入一个信令网关来将其他的信令翻译成SIP。
那种方法更适合你?需要根据你现有的基础架构和你的规划进行选择。
-
·你是否已经有SIP基础架构?
-
·你是否有SFU或者MCU来帮助你扩展WebRTC连接?
-
·你的网页应用是否准备好实用像WebSync或者XMPP的系统,来进行实时的文本消息通信?
-
·你的应用是运行在哪个用户平台上?
-
·你是否有运行在这些平台上的SIP信令栈?
你需要仔细的思考并回答这些问题,然后再进行选择。
媒体平面
如果你现在手头上没有现成的SIP基础架构,那么正确的选择可能就是简单的选择一个兼容WebRTC的SIP技术。
很多SIP网关(比如FreeSWITCH)和SIP中继服务(比如Voxbone)可以被配置成使用DTLS/ICE以及WebRTC授权的codec。
如果你已经有了SIP基础架构,那么可能需要加入一个会话边界控制器(SBC),或者其他相似的设备,可以被用来作为WebRTC和VoIP终端之间的媒体网关。
如果你有SFU/MCU来帮助你扩展WebRTC连接的话,那么媒体服务器就可以当做这个网关。