有人询问Quora here这个问题,但没有答案。除了更改jsSip的源代码之外,还有解决方案吗?
问题在于,与webRTC一起使用的大多数JS SIP库都是通过websockets(RFC 7118)实现的。此外,Chrome现在要求在https上运行getUserMedia接口,这对SIP服务器端提出了额外的要求。 SIP服务器还必须支持websockets,SRTP,DTLS等。
如果SIP呼叫是通过浏览器进行的,那么这一切都是有意义的,无论是作为webRTC的信令机制还是通过网页进行的非webRTC电话呼叫。
但是,当SIP服务器位于本地网络上并且必须从应用服务器启动SIP呼叫时,所有这些要求都不再适用。应该可以通过普通UDP进行JS SIP调用而无需使用SIP服务器运行http服务器,因为在我的情况下,http服务器与应用服务器本身集成。
Scenario 1 as supported bymost JS SIP libraries:
JSSIP (in HTML page <------>websockets<---->[http-builtin with SIP server]<---->PSTN
Scenario 2 which applies to the question:
JSSIP (in HTML page <--https---->app-server with https-server<----local net--->[SIP server] <-----> PSTN
答案 0 :(得分:1)
看起来你已经建立了自己的,但我正在寻找类似的东西并发现了这个: https://github.com/davehorton/drachtio
我还没有尝试过,但它被设计为nodejs服务器上的中间件,看起来它支持旧的非websockets模型。
答案 1 :(得分:0)
我建议为此获得WebRTC to SIP gateway,因为这可以解决您的所有问题。使用websocket或其他协议进行信令与媒体处理无关。您仍然需要DTLS / SRTP。纯UDP / RTP不适用于WebRTC。