private void OnHandshakeCallback(HTTPRequest req, HTTPResponse resp) { HandshakeRequest = null; switch (req.State) { case HTTPRequestStates.Finished: if (resp.IsSuccess) { HTTPManager.Logger.Information("HandshakeData", "Handshake data arrived: " + resp.DataAsText); int num = resp.DataAsText.IndexOf("{"); if (num < 0) { RaiseOnError("Invalid handshake text: " + resp.DataAsText); } else { HandshakeData handshakeData = Parse(resp.DataAsText.Substring(num)); if (handshakeData == null) { RaiseOnError("Parsing Handshake data failed: " + resp.DataAsText); } else if (OnReceived != null) { OnReceived(this); OnReceived = null; } } } else { RaiseOnError($"Handshake request finished Successfully, but the server sent an error. Status Code: {resp.StatusCode}-{resp.Message} Message: {resp.DataAsText} Uri: {req.CurrentUri}"); } break; case HTTPRequestStates.Error: RaiseOnError((req.Exception == null) ? string.Empty : (req.Exception.Message + " " + req.Exception.StackTrace)); break; default: RaiseOnError(req.State.ToString()); break; } }
public void Open() { if (State == States.Initial || State == States.Closed || State == States.Reconnecting) { HTTPManager.Logger.Information("SocketManager", "Opening"); ReconnectAt = DateTime.MinValue; Handshake = new HandshakeData(this); Handshake.OnReceived = delegate { CreateTransports(); }; Handshake.OnError = delegate(HandshakeData hsd, string err) { ((IManager)this).EmitError(SocketIOErrors.Internal, err); ((IManager)this).TryToReconnect(); }; Handshake.Start(); ((IManager)this).EmitEvent("connecting", new object[0]); State = States.Opening; ConnectionStarted = DateTime.UtcNow; HTTPManager.Heartbeats.Subscribe(this); GetSocket("/"); } }