我有一个带有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
答案 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