c# - Websocket help! -


i'm working on websocket application. have server written in c#. have tested using c# application sending , receiving data. problem occurs when use javascript on chrome developer tool (console) , use websockets connect server.

  1. i receive header string websocket script, 2 keys , last 8 characters hashing.

  2. i used header string keys generate hash code , crate header send chrome(j script on developer tool).

issues:-

  1. the onopen event never triggered , websocket not receive header(i assume). use onerror capture errors. never occur.

  2. the readystate on websocket 0 or 2(always).

    • but when send disconnect response server, websocket triggers onclose method. (so assume open not ready communicate)

any suggestions??????? here's javascript if helps.

websocket = new websocket('ws://my server ip here:8080');   try {     websocket.onopen = function(evt) {          open(evt)         //websocket.send("message send");         alert("message sent...");     } } catch(err) {      debug(err,'error') }   websocket.onerror = function(evt) {     error(evt) }   websocket.onclose = function(evt) {      close(evt)  }  websocket.onmessage = function(evt) {     message(evt)  }  function open(evt) {      alert("connected");      dosend("websocket rocks");  }   function error(evt) {     alert (evt.data) }  function close(evt) {      alert("disconnected");  }   function message(evt) {      alert(evt.data);  }   function dosend(message) {     alert(message);      websocket.send(message);  } 

and header sent

http/1.1 101 websocket protocol handshake

upgrade: websocket

connection: upgrade

sec-websocket-origin: chrome://newtab

sec-websocket-location: ws://my server ip:8080 ??i???m?!??9?

thanks everyone.

it looks you're trying respond handshake request without appropriate challenge response. robin mentioned, handshake more complex , involves challenge newer versions of websocket protocol. this article explains version 76 handshake in more detail.

here's code sample detects websocket protocol version , replies appropriate response. (it's in java, ymmv, should point in right direction.)

// create websocket handshake response. httpresponse res = new defaulthttpresponse(http_1_1,     new httpresponsestatus(101, "web socket protocol handshake")); res.addheader(names.upgrade, websocket); res.addheader(connection, values.upgrade);  // fill in headers , contents depending on handshake method. // new handshake specification has challenge. if (req.containsheader(sec_websocket_key1)         && req.containsheader(sec_websocket_key2)) {      // new handshake method challenge     res.addheader(sec_websocket_origin, req.getheader(origin));     res.addheader(sec_websocket_location, getwebsocketlocation(req));      string protocol = req.getheader(sec_websocket_protocol);      if (protocol != null) {         res.addheader(sec_websocket_protocol, protocol);     }      // calculate answer of challenge.     string key1 = req.getheader(sec_websocket_key1);     string key2 = req.getheader(sec_websocket_key2);     int = (int) (long.parselong(key1.replaceall("[^0-9]", "")) / key1             .replaceall("[^ ]", "").length());     int b = (int) (long.parselong(key2.replaceall("[^0-9]", "")) / key2             .replaceall("[^ ]", "").length());     long c = req.getcontent().readlong();     channelbuffer input = channelbuffers.buffer(16);     input.writeint(a);     input.writeint(b);     input.writelong(c);     channelbuffer output = channelbuffers             .wrappedbuffer(messagedigest.getinstance("md5").digest(                     input.array()));     res.setcontent(output); } else {     // old handshake method no challenge:     res.addheader(websocket_origin, req.getheader(origin));     res.addheader(websocket_location, getwebsocketlocation(req));     string protocol = req.getheader(websocket_protocol);     if (protocol != null) {         res.addheader(websocket_protocol, protocol);     } }  // send response... 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -