[asterisk-users] Websockets on Asterisk 11 and SipML5

Andrew Latham lathama at gmail.com
Tue Aug 14 12:24:04 CDT 2012


On Tue, Aug 14, 2012 at 1:20 PM, James Mortensen
<james.mortensen at a-cti.com> wrote:
> mailsvb <mailsvb <at> gmail.com> writes:
>
>>
>>
>> Hi,
>>
>> I was facing the very same issue and created a ticket...
>>
>>
>> https://issues.asterisk.org/jira/browse/ASTERISK-20221
>>
>> best regards,
>> Sven2012/8/13 James Mortensen <james.mortensen <at> a-cti.com>
>> Andrew Latham <lathama <at> gmail.com> writes:
>> >
>> > On Mon, Aug 13, 2012 at 2:58 PM, James Mortensen
>>
>> > <james.mortensen <at> a-cti.com> wrote:
>> > > Hello,
>> > >
>> > > I'm trying to register a user using sipml5 on Asterisk 11. I followed the
>> > > instructions here:
>> > > http://thr3ads.net/asterisk-users/2012/08/1972342-Asterisk-Websockets
>> > >
>> > > I added transport=ws to my sip.conf file:
>> > >
>> > > [3002]
>> > > username=3002
>> > > secret=XXXXXXXXX
>> > > host=dynamic
>> > > type=friend
>> > > context=test
>> > > disallow=all
>> > > allow=g729
>> > > ;allow=all                     ; Allow codecs in order of preference
>> > > allow=ilbc
>> > > allow=silk8
>> > > allow=gsm
>> > > transport=ws
>> > >
>> > >
>> > > I also modified the sipml5 library so that the URL looks like this:
>> > > ws://example.org:8088/ws with the /ws at the end, as instructed.
>> > >
>> > > Now, where I get confused is here:
>> > >
>> > > "You will need to change sipml5 to use http://<hostname or IP address of
>> > >
>> > > Asterisk>:8088/ws as the URL. WebSocket is only available on the /ws
> path."
>> > >
>> > >
>> > > Did Joshua mean to say ws:// instead of http://?  Because I'm not aware of
>> > > WebSockets working with http protocols, only ws protocols. Is there
>> > > something I'm missing here?
>> > >
>> > >
>> > >
>> > > The error that I'm getting in the sipml5 client is:  "Disconnected: Failed
>> > > to connet to the server"  And that typo is not mine.
>> > >
>> > >
>> > >
>> > >
>> > > On the server, here is what I see from a tcpdump. The port appears to be
>> > > open, but I'm not convinced that Asterisk is actually listening for
>> > > WebSocket traffic:
>> > >
>> > >
>> > >
>> > >
>> > > tcpdump -v port 8088
>> > >
>> > >
>> > >
>> > >
>> > > 18:57:03.051712 IP (tos 0x0, ttl 243, id 21320, offset 0, flags [DF],
> proto
>> > > TCP (6), length 60)
>> > >     static-50-43-101-83.bvtn.or.frontiernet.net.63036 >
>> > > ip-10-168-151-65.us-west-1.compute.internal.omniorb: Flags [S], cksum
> 0x4f7a
>> > > (correct), seq 4055598050, win 14600, options [mss
>> > > 1380,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop],
> length
>> > > 0
>> > > 18:57:03.051758 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP
>> > > (6), length 40)
>> > >     ip-10-168-151-65.us-west-1.compute.internal.omniorb >
>> > > static-50-43-101-83.bvtn.or.frontiernet.net.63036: Flags [R.], cksum
> 0xeaf4
>> > > (correct), seq 0, ack 4055598051, win 0, length 0
>> > >
>> > >
>> > >
>> > > Is there something else I'm missing?  Please let me know what additional
>> > > information you need from me.
>> > >
>> > > Thank you!
>> > >
>> > > --
>> > > James Mortensen
>> > >
>> >
>> > Look to see if the /ws is showing in an "http show status"
>> >
>> > '''
>> > *CLI> http show status
>> > HTTP Server Status:
>> > Prefix:
>> > Server Enabled and Bound to 0.0.0.0:8088
>> >
>> > Enabled URI's:
>> > /httpstatus => Asterisk HTTP General Status
>> > /phoneprov/... => Asterisk HTTP Phone Provisioning Tool
>> > /amanager => HTML Manager Event Interface w/Digest authentication
>> > /uploads => HTTP POST mapping
>> > /arawman => Raw HTTP Manager Event Interface w/Digest authentication
>> > /manager => HTML Manager Event Interface
>> > /rawman => Raw HTTP Manager Event Interface
>> > /static/... => Asterisk HTTP Static Delivery
>> > /amxml => XML Manager Event Interface w/Digest authentication
>> > /mxml => XML Manager Event Interface
>> > /ws => Asterisk HTTP WebSocket
>> >
>> > Enabled Redirects:
>> >   / => /static/admin.html
>> > *CLI>
>> > '''
>> >
>> Hi Andrew,
>> I uncommented enabled=yes in http.conf and now see the /ws => Asterisk HTTP
>> WebSocket. I also modified bindaddr=0.0.0.0 as it was previously 127.0.0.1.  I
>> can connect and I do see the following output in my Chrome NET tab:
>> Request URL:ws://example.org:8088/ws
>> Request Method:GET
>> Status Code:101 Switching Protocols
>> Request Headersview source
>> Connection:Upgrade
>> Host:example.org:8088
>> Origin:http://local:8888
>> Sec-WebSocket-Extensions:x-webkit-deflate-frame
>> Sec-WebSocket-Key:fazgtURy132RAFXGRiT9TA==
>> Sec-WebSocket-Protocol:sip
>> Sec-WebSocket-Version:13
>> Upgrade:websocket
>> (Key3):00:00:00:00:00:00:00:00
>> Response Headersview source
>> Connection:Upgrade
>> Sec-WebSocket-Accept:fQA1LFnbYFSxFYAr7Ls1Keh54KY=
>> Sec-WebSocket-Protocol:sip
>> Upgrade:websocket
>> (Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
>> However, the Asterisk server dies afterwards and must be restarted. The
>> /var/log/messages file has no helpful information; I was tailing it as I made
>> one of my connect attempts.
>> If it helps, I have a local Asterisk 11 setup in verbose mode, and I did see
> the
>> following warning message when trying to connect to it instead:
>> *CLI> [Aug 13 13:17:39] WARNING[567]: res_http_websocket.c:533
>> websocket_callback: WebSocket connection from '127.0.0.1:53845' could not be
>> accepted - no protocols out of 'sip' supported
>> Also, here is what I see in the Chrome NET tab:  (I hope this doesn't confuse
>> the problem. Keep in mind that these are 2 separate Asterisk 11 instances, one
>> at example.org and one at 127.0.0.1):
>> Request URL:ws://127.0.0.1:8088/ws
>> Request Headersview source
>> Connection:Upgrade
>> Cookie:__utma=96992031.124949559.1343691697.1343691697.1343691697.1;
>> __utmz=96992031.1343691697.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
>> Host:127.0.0.1:8088
>> Origin:http://local:8888
>> Sec-WebSocket-Extensions:x-webkit-deflate-frame
>> Sec-WebSocket-Key:UnhnlavzW/Gk6mwJMdLU/w==
>> Sec-WebSocket-Protocol:sip
>> Sec-WebSocket-Version:13
>> Upgrade:websocket
>> (Key3):00:00:00:00:00:00:00:00
>> Let me know if there is any other information you need. Thanks again for your
>> help!
>> James
>>
>> --
>> _____________________________________________________________________
>
>
> Hi All,
>
> I applied the patch and reinstalled, but the issue with Asterisk terminating
> still exists.
>
> I turned up my debug logging so we could see more of what's happening when I try
> to connect from the sipml5 client.
>
> Before the disconnect, I'm getting a SIP/2.0 401 Unauthorized. The same
> credentials work when using the sipml5.org:4062 Websocket server. If anyone
> knows what I'm missing, I'd appreciate some insight. Thanks again!
>
> Here is what I see:
>
>
> <--- SIP read from WS:50.43.101.83:2807 --->
> REGISTER sip:example.org SIP/2.0
> Via: SIP/2.0/WS
> df7jal23ls0d.invalid;branch=z9hG4bKPhRKToHsHAU18BcfrkMkTrEuli21WRNN;rport
> From: <sip:3002 at example.org>;tag=zlmPlTESDfSSHTJ1kJcq
> To: <sip:3002 at example.org>
> Contact: "Jaymes"
> <sip:3002 at df7jal23ls0d.invalid;transport=ws>;expires=200;+g.oma.sip-
> im;+audio;language="en,fr"
> Call-ID: 15a7e7be-6dda-0d29-3048-c18ae39aa9cb
> CSeq: 56621 REGISTER
> Content-Length: 0
> Max-Forwards: 70
> User-Agent: IM-client/OMA1.0 sipML5/v0.0.0000.0
> Organization: Doubango Telecom
> Supported: path
>
> <------------->
> --- (12 headers 0 lines) ---
>
> <--- Transmitting (no NAT) to 50.43.101.83:5060 --->
> SIP/2.0 401 Unauthorized
> Via: SIP/2.0/WS
> df7jal23ls0d.invalid;branch=z9hG4bKPhRKToHsHAU18BcfrkMkTrEuli21WRNN;rport;receiv
> ed=50.43.101.83
> From: <sip:3002 at example.org>;tag=zlmPlTESDfSSHTJ1kJcq
> To: <sip:3002 at example.org>;tag=as76bbb28c
> Call-ID: 15a7e7be-6dda-0d29-3048-c18ae39aa9cb
> CSeq: 56621 REGISTER
> Server: Asterisk PBX 11.0.0-beta1
> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO,
> PUBLISH
> Supported: replaces, timer
> WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="3ed6b126"
> Content-Length: 0
>
>
> <------------>
> Scheduling destruction of SIP dialog '15a7e7be-6dda-0d29-3048-c18ae39aa9cb' in
> 32000 ms (Method: REGISTER)
>
> <--- SIP read from WS:50.43.101.83:2807 --->
> REGISTER sip:example.org SIP/2.0
> Via: SIP/2.0/WS
> df7jal23ls0d.invalid;branch=z9hG4bKkI8uGewpCFHwqxCtmUDDwbhTdBNQpNBe;rport
> From: <sip:3002 at example.org>;tag=zlmPlTESDfSSHTJ1kJcq
> To: <sip:3002 at example.org>
> Contact: "Jaymes"
> <sip:3002 at df7jal23ls0d.invalid;transport=ws>;expires=200;+g.oma.sip-
> im;+audio;language="en,fr"
> Call-ID: 15a7e7be-6dda-0d29-3048-c18ae39aa9cb
> CSeq: 56622 REGISTER
> Content-Length: 0
> Max-Forwards: 70
> Authorization: Digest
> username="3002",realm="asterisk",nonce="3ed6b126",uri="sip:example.org",response
> ="96dd23c4248b600374b78307013d9d00",algorithm=MD5
> User-Agent: IM-client/OMA1.0 sipML5/v0.0.0000.0
> Organization: Doubango Telecom
> Supported: path
>
> <------------->
> --- (13 headers 0 lines) ---
> ip-10-168-151-65*CLI>
> Disconnected from Asterisk server
> Executing last minute cleanups
> Asterisk cleanly ending (0).
> Asterisk ending (0).
>
>
>
>
>
> --

James, can you add this to the issue at
https://issues.asterisk.org/jira/browse/ASTERISK-20221


-- 
~ Andrew "lathama" Latham lathama at gmail.com http://lathama.net ~



More information about the asterisk-users mailing list