private void OnInternalRequestUpgraded(HTTPRequest req, HTTPResponse resp) { webSocket = resp as WebSocketResponse; if (webSocket == null) { if (OnError != null) { OnError(this, req.Exception); } if (OnErrorDesc != null) { string reason = string.Empty; if (req.Exception != null) { reason = req.Exception.Message + " " + req.Exception.StackTrace; } OnErrorDesc(this, reason); } return; } webSocket.WebSocket = this; if (this.Extensions != null) { for (int i = 0; i < this.Extensions.Length; ++i) { var ext = this.Extensions[i]; try { if (ext != null && !ext.ParseNegotiation(webSocket)) { this.Extensions[i] = null; // Keep extensions only that succesfully negotiated } } catch (Exception ex) { HTTPManager.Logger.Exception("WebSocket", "ParseNegotiation", ex); // Do not try to use a defective extension in the future this.Extensions[i] = null; } } } if (OnOpen != null) { try { OnOpen(this); } catch (Exception ex) { HTTPManager.Logger.Exception("WebSocket", "OnOpen", ex); } } webSocket.OnText = (ws, msg) => { if (OnMessage != null) { OnMessage(this, msg); } }; webSocket.OnBinary = (ws, bin) => { if (OnBinary != null) { OnBinary(this, bin); } }; webSocket.OnClosed = (ws, code, msg) => { if (OnClosed != null) { OnClosed(this, code, msg); } }; if (OnIncompleteFrame != null) { webSocket.OnIncompleteFrame = (ws, frame) => { if (OnIncompleteFrame != null) { OnIncompleteFrame(this, frame); } } } ; if (StartPingThread) { webSocket.StartPinging(Math.Max(PingFrequency, 100)); } webSocket.StartReceive(); }
private void OnInternalRequestUpgraded(HTTPRequest req, HTTPResponse resp) { HTTPManager.Logger.Information("WebSocket", "Internal request upgraded!", this.Context); webSocket = resp as WebSocketResponse; if (webSocket == null) { if (OnError != null) { string reason = string.Empty; if (req.Exception != null) { reason = req.Exception.Message + " " + req.Exception.StackTrace; } OnError(this, reason); } this.State = WebSocketStates.Closed; return; } // If Close called while we connected if (this.State == WebSocketStates.Closed) { webSocket.CloseStream(); return; } if (!resp.HasHeader("sec-websocket-accept")) { this.State = WebSocketStates.Closed; webSocket.CloseStream(); if (OnError != null) { OnError(this, "No Sec-Websocket-Accept header is sent by the server!"); } return; } webSocket.WebSocket = this; if (this.Extensions != null) { for (int i = 0; i < this.Extensions.Length; ++i) { var ext = this.Extensions[i]; try { if (ext != null && !ext.ParseNegotiation(webSocket)) { this.Extensions[i] = null; // Keep extensions only that successfully negotiated } } catch (Exception ex) { HTTPManager.Logger.Exception("WebSocket", "ParseNegotiation", ex, this.Context); // Do not try to use a defective extension in the future this.Extensions[i] = null; } } } this.State = WebSocketStates.Open; if (OnOpen != null) { try { OnOpen(this); } catch (Exception ex) { HTTPManager.Logger.Exception("WebSocket", "OnOpen", ex, this.Context); } } webSocket.OnText = (ws, msg) => { if (OnMessage != null) { OnMessage(this, msg); } }; webSocket.OnBinary = (ws, bin) => { if (OnBinary != null) { OnBinary(this, bin); } }; webSocket.OnClosed = (ws, code, msg) => { this.State = WebSocketStates.Closed; if (OnClosed != null) { OnClosed(this, code, msg); } }; if (OnIncompleteFrame != null) { webSocket.OnIncompleteFrame = (ws, frame) => { if (OnIncompleteFrame != null) { OnIncompleteFrame(this, frame); } } } ; if (StartPingThread) { webSocket.StartPinging(Math.Max(PingFrequency, 100)); } webSocket.StartReceive(); }
private void OnInternalRequestUpgraded(HTTPRequest req, HTTPResponse resp) { webSocket = resp as WebSocketResponse; if (webSocket == null) { if (OnError != null) OnError(this, req.Exception); if (OnErrorDesc != null) { string reason = string.Empty; if (req.Exception != null) reason = req.Exception.Message + " " + req.Exception.StackTrace; OnErrorDesc(this, reason); } return; } webSocket.WebSocket = this; if (this.Extensions != null) { for (int i = 0; i < this.Extensions.Length; ++i) { var ext = this.Extensions[i]; try { if (ext != null && !ext.ParseNegotiation(webSocket)) this.Extensions[i] = null; // Keep extensions only that succesfully negotiated } catch (Exception ex) { HTTPManager.Logger.Exception("WebSocket", "ParseNegotiation", ex); // Do not try to use a defective extension in the future this.Extensions[i] = null; } } } if (OnOpen != null) { try { OnOpen(this); } catch(Exception ex) { HTTPManager.Logger.Exception("WebSocket", "OnOpen", ex); } } webSocket.OnText = (ws, msg) => { if (OnMessage != null) OnMessage(this, msg); }; webSocket.OnBinary = (ws, bin) => { if (OnBinary != null) OnBinary(this, bin); }; webSocket.OnClosed = (ws, code, msg) => { if (OnClosed != null) OnClosed(this, code, msg); }; if (OnIncompleteFrame != null) webSocket.OnIncompleteFrame = (ws, frame) => { if (OnIncompleteFrame != null) OnIncompleteFrame(this, frame); }; if (StartPingThread) webSocket.StartPinging(Math.Max(PingFrequency, 100)); webSocket.StartReceive(); }
private void OnInternalRequestUpgraded(HTTPRequest req, HTTPResponse resp) { webSocket = resp as WebSocketResponse; if (webSocket == null) { if (OnError != null) { OnError(this, req.Exception); } if (OnErrorDesc != null) { string reason = string.Empty; if (req.Exception != null) { reason = req.Exception.Message + " " + req.Exception.StackTrace; } OnErrorDesc(this, reason); } return; } if (OnOpen != null) { try { OnOpen(this); } catch (Exception ex) { HTTPManager.Logger.Exception("WebSocket", "OnOpen", ex); } } webSocket.OnText = (ws, msg) => { if (OnMessage != null) { OnMessage(this, msg); } }; webSocket.OnBinary = (ws, bin) => { if (OnBinary != null) { OnBinary(this, bin); } }; webSocket.OnClosed = (ws, code, msg) => { if (OnClosed != null) { OnClosed(this, code, msg); } }; if (OnIncompleteFrame != null) { webSocket.OnIncompleteFrame = (ws, frame) => { if (OnIncompleteFrame != null) { OnIncompleteFrame(this, frame); } } } ; if (StartPingThread) { webSocket.StartPinging(Math.Max(PingFrequency, 100)); } webSocket.StartReceive(); }
private void OnInternalRequestUpgraded(HTTPRequest req, HTTPResponse resp) { webSocket = resp as WebSocketResponse; if (webSocket == null) { if (OnError != null) OnError(this, req.Exception); if (OnErrorDesc != null) { string reason = string.Empty; if (req.Exception != null) reason = req.Exception.Message + " " + req.Exception.StackTrace; OnErrorDesc(this, reason); } return; } if (OnOpen != null) { try { OnOpen(this); } catch(Exception ex) { HTTPManager.Logger.Exception("WebSocket", "OnOpen", ex); } } webSocket.OnText = (ws, msg) => { if (OnMessage != null) OnMessage(this, msg); }; webSocket.OnBinary = (ws, bin) => { if (OnBinary != null) OnBinary(this, bin); }; webSocket.OnClosed = (ws, code, msg) => { if (OnClosed != null) OnClosed(this, code, msg); }; if (OnIncompleteFrame != null) webSocket.OnIncompleteFrame = (ws, frame) => { if (OnIncompleteFrame != null) OnIncompleteFrame(this, frame); }; if (StartPingThread) webSocket.StartPinging(Math.Min(PingFrequency, 100)); webSocket.StartReceive(); }