protected virtual void OnReceive(object sender, WSReceiveArgs e) { if (e.Error != null) { var frame = Request?.Server.CreateDataFrame(new { Code = 500, Error = $"{e.Error.Message}" }); frame?.Send(Request.Session); if (Gateway.HttpServer.EnableLog(BeetleX.EventArgs.LogType.Warring)) { Gateway.HttpServer.Log(BeetleX.EventArgs.LogType.Warring, $"Gateway websocket {Request.ID} {Request.RemoteIPAddress} {Request.Method} {Request.BaseUrl} process error {e.Error.Message}@{e.Error.StackTrace}"); } WSClient.ServerAgent.Statistics.Add(Gateway.WEBSOCKET_INNER_ERROR, 10); Gateway.Statistics.Add(Gateway.WEBSOCKET_INNER_ERROR, 10); Gateway.RequestIncrementCompleted(Request, Gateway.WEBSOCKET_INNER_ERROR, 10, WSClient.ServerAgent); } else { var frame = Request?.Server.CreateDataFrame(); frame.FIN = e.Frame.FIN; frame.IsMask = e.Frame.IsMask; frame.MaskKey = e.Frame.MaskKey; frame.RSV1 = e.Frame.RSV1; frame.RSV2 = e.Frame.RSV2; frame.RSV3 = e.Frame.RSV3; frame.Type = e.Frame.Type; frame.Body = e.Frame; frame.Send(Request.Session); var time = GetTime(e.Frame); WSClient.ServerAgent.Statistics.Add(Gateway.WEBSOCKET_SUCCESS, time); Gateway.Statistics.Add(Gateway.WEBSOCKET_SUCCESS, time); Gateway.RequestIncrementCompleted(Request, Gateway.WEBSOCKET_SUCCESS, time, WSClient.ServerAgent); } }
protected virtual void OnDataReceive(AgentDataFrame data) { if (DataReceive != null) { WSReceiveArgs e = new WSReceiveArgs(); e.Client = this; e.Frame = data; DataReceive(this, e); } }
protected virtual void OnDataReceive(WSReceiveArgs e) { try { DataReceive?.Invoke(this, e); } catch (Exception e_) { try { e.Error = new BXException($"ws client receive error {e_.Message}", e_); DataReceive?.Invoke(this, e); } catch { } } }
private void OnClientError(IClient c, ClientErrorArgs e) { if (OnWSConnected) { if (e.Error is BXException) { OnWSConnected = false; } try { WSReceiveArgs wse = new WSReceiveArgs(); wse.Client = this; wse.Error = e.Error; DataReceive?.Invoke(this, wse); } catch { } } else { OnConnectResponse(e.Error, null); } }