配置 Asterisk 13 以支持 WebSockets/WebRTC
Configuration of Asterisk 13 to support WebSockets/WebRTC
我有一台装有 debian 9 的虚拟机。我已经通过 apt-get 安装了 Asterisk 13.14.1,并将其配置为拥有三个用户,其中两个是 sip 用户(Zoiper APP),另一个是 webrtc 用户(使用 http://jssip.net/). The custom app is very basic and uses the code the can be found in 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 处于活动状态。
关于如何进一步调试它有什么建议吗?
谢谢
西蒙
1)阅读更多关于 websocket 的信息,做 tcpdump。
2) 进行星号调试
asterisk -r
core set debug 10
一如既往,答案要简单得多。我不得不改变
var socket = new JsSIP.WebSocketInterface('ws://mypbxipaddress:8088/ws');
经过一番搜索,我得出的结论是:
asterisk -rvvvvv
http show status
那里提到"Server Enabled and Bound to mypbxipaddress:8088",它在/etc/asterisk/http.conf
中定义
bindaddr=mypbxipaddress
bindport=8088
你应该试试: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
我有一台装有 debian 9 的虚拟机。我已经通过 apt-get 安装了 Asterisk 13.14.1,并将其配置为拥有三个用户,其中两个是 sip 用户(Zoiper APP),另一个是 webrtc 用户(使用 http://jssip.net/). The custom app is very basic and uses the code the can be found in 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 处于活动状态。
关于如何进一步调试它有什么建议吗?
谢谢 西蒙
1)阅读更多关于 websocket 的信息,做 tcpdump。
2) 进行星号调试
asterisk -r
core set debug 10
一如既往,答案要简单得多。我不得不改变
var socket = new JsSIP.WebSocketInterface('ws://mypbxipaddress:8088/ws');
经过一番搜索,我得出的结论是:
asterisk -rvvvvv
http show status
那里提到"Server Enabled and Bound to mypbxipaddress:8088",它在/etc/asterisk/http.conf
中定义bindaddr=mypbxipaddress
bindport=8088
你应该试试: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