private void onOpenHandshakeResponse(byte[] data, int size) { if (!(parser != null)) { return; } if (size < 1) { var c = getOnErrorCallback(); if (c != null) { c(); } return; } parser.onDataReceived(data, (long)size); if (!parser.getEndOfResponse()) { return; } var headers = parser.headers; parser.reset(); parser = null; var statusCode = headers.getHttpStatus(); if (object.Equals(statusCode, "101")) { if (cape.String.equalsIgnoreCase("websocket", headers.getHeader("upgrade")) == false) { var c1 = getOnErrorCallback(); if (c1 != null) { c1(); } return; } else if (cape.String.equalsIgnoreCase("websocket", headers.getHeader("upgrade")) == false) { var c2 = getOnErrorCallback(); if (c2 != null) { c2(); } return; } else if (cape.String.equalsIgnoreCase("upgrade", headers.getHeader("connection")) == false) { var c3 = getOnErrorCallback(); if (c3 != null) { c3(); } return; } else if (cape.String.equals(accept, headers.getHeader("sec-websocket-accept")) == false) { var c4 = getOnErrorCallback(); if (c4 != null) { c4(); } return; } client.receive((byte[] d, int sz) => { if (processData(d, sz) == false) { var c5 = getOnCloseCallback(); if (c5 != null) { c5((capex.net.WSCloseEvent) new capex.net.WSSocketGeneric.MyWSCloseEvent().setStatusCode(capex.net.WSCloseEvent.CLOSE_ABNORMAL)); } } }); var c6 = getOnOpenCallback(); if (c6 != null) { c6(); } return; } var c7 = getOnErrorCallback(); if (c7 != null) { c7(); } }
public override void connect(string url, string protocols) { if (client != null) { client.disconnect((cape.Error de) => { var c = getOnErrorCallback(); if (c != null) { c(); } }); client = null; } client = capex.net.TCPClient.instance(); if (!(client != null)) { var c1 = getOnErrorCallback(); if (c1 != null) { c1(); } return; } var u = cape.URL.forString(url); if (!(u != null)) { var c2 = getOnErrorCallback(); if (c2 != null) { c2(); } return; } var port = u.getPortInt(); if (port < 1) { port = 80; } client.connect(u.getHost(), port, (cape.Error e) => { if (!(e != null)) { parser = new capex.net.WSSocketGeneric.HTTPResponseParser(); client.receive((byte[] data, int size) => { onOpenHandshakeResponse(data, size); }); var v = capex.net.WSSocketGeneric.WSHelper.createOpenHandshakeHTTPRequest(u, key); client.send(v, v.Length, (cape.Error oe) => { if (!(oe != null)) { return; } client.disconnect((cape.Error de2) => { var c3 = getOnErrorCallback(); if (c3 != null) { c3(); } }); }); return; } var c4 = getOnErrorCallback(); if (c4 != null) { c4(); } }); }