[Libwebsockets] Problems with the ietf Version

Steve Hegenbart steve.hegenbart at gmx.de
Thu Feb 21 16:32:44 CET 2013


Dear Andy,

i just updated from Version 0.1 to Version 1.2 (actually that took me a  
bit of time getting everything to work).
Sadly, my websocket connection won't work like it should with the current  
ietf Version.

With the old sources, i've choosen version 0, which made a connection with  
two websocket keys and worked properly (i needed that based on the server  
connection). The connection is still working anyway, yet i'm sending my  
packages to the server (most likely 5464 bytes data packages, based on  
4096 bytes packages encoded to base64) and getting a response for Invalid  
UTF-8 from the server after some time.

Question 1:
Is there a possibility to change back to the Sec-WebSocket-Key1 /  
Sec-WebSocket-Key2 version?

Question 2:
Is there anything that changed and i do have to care about for the  
encoding formats of the websocket? I just changed from the old code to the  
new one by generating the lws_context_creation_info struct with the old  
values. Now i've already seen to care for the 4096 buffer size changings  
and i am not sure what to check out for. Nevertheless, i will check what i  
could change for the moment.

Here some stuff send by the old and the new libraries and the changed code:

*** libwebsockets 0.1:

GET /webSocket/WebSocketAudioServlet HTTP/1.1
Host: XX.XX.XX.XX
Connection: Upgrade
Sec-WebSocket-Key2: < 1Z 5w 680, 31m0\ 6=5
Upgrade: WebSocket
Sec-WebSocket-Key1: 17N 1 3 l0 906 8
Origin: http://XX.XX.XX.XX

HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://XX.XX.XX.XX
Sec-WebSocket-Location: ws://XX.XX.XX.XX/webSocket/WebSocketAudioServlet

.AUTH some_random_auth_code..OK..RECOSTART  
{"timing":"true","lang":"de-DE"}..OK..DATA 5464  
AAD+/wwA4f80AMP/GwBuAJf2wPBn8tfxF/LN8XjxqvE08oXyX/


*** libwebsockets 2.1:

GET /webSocket/WebSocketAudioServlet HTTP/1.1
Pragma: no-cache
Cache-Control: no-cache
Host: XX.XX.XX.XXUpgrade: websocket
Connection: Upgrade

Sec-WebSocket-Key: 5agP9l/+ftSJtgpl1QyGFw==
Origin: http://XX.XX.XX.XXSec-WebSocket-Protocol: ROS EML Audio Protocol
Sec-WebSocket-Extensions:
Sec-WebSocket-Version: 13

HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: 4btSCqQbIQ2VNJwywsECpx8CgUc=
Sec-WebSocket-Protocol: ROS EML Audio Protocol

..+.._j......lM..h...l...k...rJ..m...;M..jO..oM..OK.......Y...H...<...u...{...h...>...}...&...1...a..OK...b..T..B.O.6`8.#.O.,{y.Bm^.T.A.,.y.h.K.;.x.3.b.53x.E.~.5.h.M.b.51h.N...5?^.l.`.5.h.h.`.5"^.R...5.x.y.=.4'x.s.`.5.h.f.;.42x.G.w.


*** The C++ code, old code as comment

static struct libwebsocket_protocols protocols[] = {
{
    "ROS EML Audio Protocol",
    websocket_callback,
    0, 0, NULL, 0
    },
    { /* end of list */
    NULL, NULL, 0, 0, NULL, 0
    }
};

---------------

struct lws_context_creation_info info;
memset(&info, 0, sizeof info);

info.port = CONTEXT_PORT_NO_LISTEN;
info.protocols = protocols;
info.gid = -1;
info.uid = -1;
info.extensions = NULL;
info.options = 0;

//if (!(_context = libwebsocket_create_context(CONTEXT_PORT_NO_LISTEN,  
NULL, protocols, NULL, NULL, NULL, -1, -1, 0, NULL))) { // old  
libwebsockets version
if (!(_context = libwebsocket_create_context(&info))) {
   _context = NULL;
   _state = WSI_NOT_CONNECTED;
   printf("<websocket_base> ERROR: Could not create websocket context\n");
   return false;
}

---------------------------------------------

Maybe you have some ideas or can append the old ietf version.

Greetings,
Steve
-- 
Steve Hegenbart - Opera Browser Mail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://libwebsockets.org/pipermail/libwebsockets/attachments/20130221/b1ac02e6/attachment.html>


More information about the Libwebsockets mailing list