2016-04-18 30 views
2

Quora here有人問這個問題,但沒有答案。除了更改jsSip的源代碼外,是否有解決此問題的解決方法?如何使用非websockets傳輸使用JS SIP庫?

問題是,大多數與webRTC一起工作的JS SIP庫都是通過websockets(RFC 7118)來實現的。此外,Chrome現在需要getUserMedia接口在https上運行,這會對SIP服務器端產生額外的要求。 SIP服務器還必須支持websocket,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

請檢查更新... – Sam

+1

問題被擱置的原因是因爲它「不清楚你在問什麼」,而不是因爲它被認爲是「脫離主題」。我建議再次編輯並刪除最後一句,以增加獲得更多重新投票的機會(到目前爲止您已有2/5)。 –

+0

@ AmosM.Carpenter。完成。 – Sam

回答

1

看起來你已經建立你自己的了,但我一直在尋找類似的事情,發現這個: https://github.com/davehorton/drachtio

我還沒有嘗試過,但它的設計是一箇中間件的NodeJS服務器,它看起來像它支持舊的非websockets模型。

+0

不,我沒有建立一個,這看起來像解決方案。我會嘗試一下......它與我所尋找的東西最接近,儘管比我想要的要多一點......我接受你的答案。 – Sam

0

我建議爲此獲得WebRTC to SIP gateway,因爲這可以解決您的所有問題。使用websocket或其他協議進行信號傳輸與媒體處理無關。你仍然需要DTLS/SRTP。普通的UDP/RTP不適用於WebRTC。

+0

我正在尋找一個JS庫,而不是一個網關。 – Sam

+0

你不會找到任何JS庫,它將滿足你的「JS SIP呼叫通過普通UDP」的要求。這根本不可能。瀏覽器不會爲普通UDP提供任何API。 – Istvan

+1

我從來沒有要求在瀏覽器中使用這個API!我希望它在我的中間件應用程序服務器中用於通過普通UDP與Asterisk通信。無論如何,我終於決定自己寫一個!我只需要支持SIP方法和功能的一個子集。徹底研究後,我發現了多種間接解決方案。例如,我們可以在諾基亞索非亞C API上編寫一個JS包裝器,我相信這個API是傳輸不可知的,或者傳輸很容易改變。 – Sam