public void Error(Exception e_, EventArgs.LogType logType = EventArgs.LogType.Error) { if (Server.EnableLog(logType)) { Server.Log(logType, "{0} ws execute {1} inner error {2}@{3}", Request.RemoteIPAddress, Request.Url, e_.Message, e_.StackTrace); } Result.Code = 500; Result.Error = e_.Message; if (Server.Options.OutputStackTrace) { Result.StackTrace = e_.StackTrace; } DataFrame.Send(Request.Session); }
public void Error(Exception e_, EventArgs.LogType logType = EventArgs.LogType.Error, int code = 500) { if (Server.EnableLog(logType)) { Server.Log(logType, $"Websocket {Request.ID} {Request.RemoteIPAddress} execute {DataContext.ActionUrl} inner error {e_.Message}@{e_.StackTrace}"); } Result.Code = code; Result.Error = e_.Message; if (Server.Options.OutputStackTrace) { Result.StackTrace = e_.StackTrace; } DataFrame.Send(Request.Session, true); }
public void Result(object data) { WebSockets.DataFrame frame = data as WebSockets.DataFrame; if (frame == null) { ActionResult result = data as ActionResult; if (result == null) { result = new ActionResult(); result.Data = data; } result.ID = RequestID; if (result.Url == null) { result.Url = this.ActionUrl; } frame = Server.CreateDataFrame(result); } frame.Send(Request.Session); }
public ActionResult ExecuteWithWS(HttpRequest request, HttpApiServer server, JToken token) { ActionResult result = new ActionResult(); JToken url = token["url"]; WebSockets.DataFrame dataFrame = server.CreateDataFrame(result); if (url == null) { if (server.EnableLog(EventArgs.LogType.Warring)) { server.BaseServer.Log(EventArgs.LogType.Warring, request.Session, "{0} ws not support, url info notfound!", request.RemoteIPAddress); } result.Code = 403; result.Error = "not support, url info notfound!"; request.Session.Send(dataFrame); return(result); } result.Url = url.Value <string>(); string baseurl = result.Url; if (server.Options.UrlIgnoreCase) { baseurl = HttpParse.CharToLower(result.Url); } if (baseurl[0] != '/') { baseurl = "/" + baseurl; } result.Url = baseurl; JToken data = token["params"]; if (data == null) { data = (JToken)Newtonsoft.Json.JsonConvert.DeserializeObject("{}"); } JToken requestid = data["_requestid"]; if (requestid != null) { result.ID = requestid.Value <string>(); } ActionHandler handler = GetAction(baseurl); if (handler == null) { if (server.EnableLog(EventArgs.LogType.Warring)) { server.BaseServer.Log(EventArgs.LogType.Warring, request.Session, "{0} ws execute {1} notfound", request.RemoteIPAddress, result.Url); } result.Code = 404; result.Error = "url " + baseurl + " notfound!"; request.Session.Send(dataFrame); } else { try { Data.DataContxt dataContxt = new Data.DataContxt(); DataContextBind.BindJson(dataContxt, data); WebsocketJsonContext dc = new WebsocketJsonContext(server, request, dataContxt); dc.ActionUrl = baseurl; dc.RequestID = result.ID; ActionContext context = new ActionContext(handler, dc, this); long startTime = server.BaseServer.GetRunTime(); WSActionResultHandler wSActionResultHandler = new WSActionResultHandler(dc, server, request, result, dataFrame, startTime); context.Execute(wSActionResultHandler); } catch (Exception e_) { handler.IncrementError(); if (server.EnableLog(EventArgs.LogType.Error)) { server.BaseServer.Log(EventArgs.LogType.Error, request.Session, "{0} ws execute {1} inner error {2}@{3}", request.RemoteIPAddress, result.Url, e_.Message, e_.StackTrace); } result.Code = 500; result.Error = e_.Message; if (server.Options.OutputStackTrace) { result.StackTrace = e_.StackTrace; } dataFrame.Send(request.Session); } } return(result); }
public ActionResult ExecuteWithWS(HttpRequest request, HttpApiServer server, JToken token) { ActionResult result = new ActionResult(); JToken url = token["url"]; WebSockets.DataFrame dataFrame = server.CreateDataFrame(result); if (url == null) { if (server.EnableLog(EventArgs.LogType.Warring)) { server.BaseServer.Log(EventArgs.LogType.Warring, request.Session, "websocket {0} not support, url info notfound!", request.ClientIPAddress); } result.Code = 403; result.Error = "not support, url info notfound!"; request.Session.Send(dataFrame); return(result); } result.Url = url.Value <string>(); string baseurl = HttpParse.CharToLower(result.Url); if (baseurl[0] != '/') { baseurl = "/" + baseurl; } result.Url = baseurl; JToken data = token["params"]; if (data == null) { data = (JToken)Newtonsoft.Json.JsonConvert.DeserializeObject("{}"); } JToken requestid = data["_requestid"]; if (requestid != null) { result.ID = requestid.Value <string>(); } ActionHandler handler = GetAction(baseurl); if (handler == null) { if (server.EnableLog(EventArgs.LogType.Warring)) { server.BaseServer.Log(EventArgs.LogType.Warring, request.Session, "websocket {0} execute {1} notfound", request.ClientIPAddress, result.Url); } result.Code = 404; result.Error = "url " + baseurl + " notfound!"; request.Session.Send(dataFrame); } else { try { WebsocketContext dc = new WebsocketContext(server, request, data); dc.ActionUrl = baseurl; dc.RequestID = result.ID; ActionContext context = new ActionContext(handler, dc); context.Execute(); if (!dc.AsyncResult) { if (context.Result is ActionResult) { result = (ActionResult)context.Result; result.ID = dc.RequestID; if (result.Url == null) { result.Url = dc.ActionUrl; } dataFrame.Body = result; } else { result.Data = context.Result; } dataFrame.Send(request.Session); //request.Session.Send(dataFrame); } } catch (Exception e_) { if (server.EnableLog(EventArgs.LogType.Error)) { server.BaseServer.Log(EventArgs.LogType.Error, request.Session, "websocket {0} execute {1} inner error {2}@{3}", request.ClientIPAddress, request.Url, e_.Message, e_.StackTrace); } result.Code = 500; result.Error = e_.Message; if (server.ServerConfig.OutputStackTrace) { result.StackTrace = e_.StackTrace; } dataFrame.Send(request.Session); //request.Session.Send(dataFrame); } } return(result); }