Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
 protected virtual void OnDataReceive(AgentDataFrame data)
 {
     if (DataReceive != null)
     {
         WSReceiveArgs e = new WSReceiveArgs();
         e.Client = this;
         e.Frame  = data;
         DataReceive(this, e);
     }
 }
Beispiel #3
0
 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 { }
     }
 }
Beispiel #4
0
 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);
     }
 }