配置Asterisk 13以支持WebSockets / WebRTC

时间:2017-08-02 10:48:06

标签: websocket webrtc asterisk

我有一个带有debian 9的虚拟机。我已经通过apt-get安装了Asterisk 13.14.1,我已经将它配置为有三个用户,其中两个是sip用户(Zoiper APP),另一个是webrtc用户(Custom应用http://jssip.net/)的应用。自定义应用程序非常基础,并使用可在https://github.com/versatica/JsSIP中找到的代码。但不是使用:

var socket = new JsSIP.WebSocketInterface('wss://mypbxipaddress');

我用

var socket = new JsSIP.WebSocketInterface('ws://mypbxipaddress');

SIP用户似乎正常工作。但是我对webrtc用户有疑问,我认为这是在服务器端,特别是在websocket上。在连接期间的客户端,我收到以下错误:

main.js:158470 WebSocket connection to 'ws://mypbxipaddress/' failed: Error during WebSocket handshake: Unexpected response code: 200

此外,我尝试过wscat(npm包)

wscat -s echo -c ws://mypbxipaddress:arandomport 

我收到了:

error: Error: connect ECONNREFUSED mypbxipaddress:arandomport

最后我签了

asterisk -rvvvvv

http show status

我得到了:

HTTP Server Status:
Prefix:
Server: Asterisk/13.14.1~dfsg-2
Server Enabled and Bound to 0.0.0.0:8080

Enabled URI's:
/httpstatus => Asterisk HTTP General Status
/phoneprov/... => Asterisk HTTP Phone Provisioning Tool
/static/... => Asterisk HTTP Static Delivery
/ari/... => Asterisk RESTful API
/ws => Asterisk HTTP WebSocket

Enabled Redirects:
  None.

表示/ ws => Asterisk HTTP WebSocket,即websocket处于活动状态。

有关如何进一步调试的任何建议吗?

由于 Symeon

3 个答案:

答案 0 :(得分:2)

答案一如既往地简单得多。我不得不改变

var socket = new JsSIP.WebSocketInterface('ws://mypbxipaddress:8088/ws');

经过一番搜索,我得出的结论是:

asterisk -rvvvvv
http show status

在“服务器启用并绑定到mypbxipaddress:8088”中提及,它在/etc/asterisk/http.conf中定义

bindaddr=mypbxipaddress
bindport=8088

答案 1 :(得分:0)

你应该尝试:wscat -s echo -c ws://mypbxipaddress:8080/ws 因为:Server Enabled and Bound to 0.0.0.0:8080/ws => Asterisk HTTP WebSocket

您还可以检查套接字是否处于LISTEN状态:

netstat -lna | grep 8080

答案 2 :(得分:-1)

1)阅读更多关于websocket的信息,做tcpdump。

2)执行星号调试

asterisk -r
core set debug 10