如何使用非 websockets 传输的 JS SIP 库?

How to use a JS SIP library using a non-websockets transport?

有人在 Quora here 上问过这个问题,但没有人回答。除了更改 jsSip 的源代码之外,是否有解决此问题的解决方案?

问题是大多数与 webRTC 一起工作的 JS SIP 库都是通过 websockets (RFC 7118) 来实现的。此外,Chrome 现在要求 getUserMedia 接口在 https 上为 运行,这对 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  

我建议为此获得 WebRTC to SIP gateway,因为这会解决您的所有问题。使用 websocket 或其他协议进行信号传输与媒体处理无关。您仍然需要 DTLS/SRTP。普通 UDP/RTP 不适用于 WebRTC。

看起来你已经建立了自己的,但我正在寻找类似的东西并找到了这个: https://github.com/davehorton/drachtio

我还没有尝试过,但它被设计为 nodejs 服务器上的中间件,看起来它支持旧的非 websockets 模型。