/// <summary> /// 发送数据 /// </summary> /// <param name="session"></param> /// <param name="segment"></param> internal void SendData(ChatSession session, ArraySegment <byte> segment) { try { int count = segment.Count; int maxRequestLength = AppConfiger.AppCfg.CurrCC_Cfg.MaxRequestLength; if (count > maxRequestLength) { int offset = 0; while (offset < count) { session.Send(segment.Array, offset, Math.Min(maxRequestLength, count - offset)); offset += maxRequestLength; } } else { session.Send(segment); } } catch (Exception ex) { var json = new JsonDict(); json.Add("SessionID", session.SessionID); json.Add("Msg", string.Format("{0} 发送数据异常,异常信息:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ex.Message)); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.ERROR_RESPONSE_KEY, json.ToBytes()); session.Send(segmentWrapper.Wrapper()); } }
public void UploadAvatar(long userId, string extName, byte[] data) { var json = new JsonDict(); json.AddLong("UserId", userId); json.Add("ExtName", extName); json.Add("Data", Convert.ToBase64String(data)); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.UPLOAD_AVATAR_REQUEST_KEY, JConverter.SerializeToBytes(json)); this.Send(segmentWrapper); }
public void Talk(TalkReq req) { var json = new JsonDict(); json.Add("FromUId", req.FromUId); json.Add("ToUId", req.ToUId); json.Add("Content", req.Content); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.TALK_REQUEST_KEY, json.ToBytes()); this.Send(segmentWrapper); }
protected override void HandleException(Exception ex) { this.Logger.ErrorFormat("应用程序异常: {0}", ex.Message); var json = new JsonDict(); json.Add("SessionID", this.SessionID); json.Add("Msg", string.Format("{0} 应用程序异常,异常信息:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ex.Message)); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.ERROR_RESPONSE_KEY, json.ToBytes()); this.SendData(this, segmentWrapper.Wrapper()); }
/// <summary> /// 提醒上线 /// </summary> /// <param name="sessionId"></param> /// <param name="userName"></param> internal void NotifyOnline(string sessionId, string userName) { var ss = AppServer.GetSessions(o => !o.SessionID.Equals(sessionId)); ss.AsParallel().ForAll(s => { var json = new JsonDict(); json.Add("SessionID", sessionId); json.Add("UserName", userName); json.Add("Msg", string.Format("{0} 客户端上线", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.NOTIFY_ONLINE_RESPONSE_KEY, json.ToBytes()); this.SendData(s, segmentWrapper.Wrapper()); }); }
public override HttpResponse Handle(HttpRequest req) { if (req.Headers.ContainsKey("SIMPLEDBADD")) { if (req.Headers["SIMPLEDBADD"] == "TRUE") { count++; } } if (req.Headers.ContainsKey("SIMPLEDBSUB")) { if (req.Headers["SIMPLEDBSUB"] == "TRUE") { count--; } } if (count < 0) { count = 0; } var dict = new JsonDict(); dict.Add("Count", JsonNumber.Create(count)); return(HttpResponse.Json(dict)); }
public static HairStyle CreateFromSavedJson(JSONNode aJson) { HairStyle newHair = null; if (aJson["savedByPlugin"].Value == HairStylist.pluginName) { newHair = new HairStyle(); foreach (JSONClass storableNode in aJson["storables"].AsArray) { string saveGroup = storableNode["storableName"]; JsonDict groupDict = new JsonDict(); foreach (JSONClass paramNode in storableNode["params"].AsArray) { groupDict.Add(paramNode["id"], paramNode.AsObject); } newHair._savedJson[saveGroup] = groupDict; } } else { SuperController.LogError("Saved file was not created by HairStylist"); } return(newHair); }
/// <summary> /// Provides the handler for AJAX calls. Pass this to a <see cref="UrlMapping"/>.</summary> /// <param name="req"> /// The incoming HTTP POST request to be handled, containing the API function name and parameters.</param> /// <param name="api"> /// The API object on which the API function is to be invoked.</param> public HttpResponse Handle(HttpRequest req, TApi api) { if (_options == AjaxHandlerOptions.PropagateExceptions) { return(callApiFunction(req, api)); } try { return(callApiFunction(req, api)); } catch (Exception e) { while (e is TargetInvocationException) { e = e.InnerException; } var error = new JsonDict { { "status", "error" } }; if (_options == AjaxHandlerOptions.ReturnExceptionsWithMessages) { error.Add("message", "{0} ({1})".Fmt(e.Message, e.GetType().Name)); } return(HttpResponse.Json(error)); } }
public void SearchUser(string account) { var json = new JsonDict(); json.Add("Account", account); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.SEARCH_USER_REQUEST_KEY, json.ToBytes()); this.Send(segmentWrapper); }
public void SaveContacts(long oUserId, long cUserId, string customName) { var json = new JsonDict(); json.AddLong("OUserId", oUserId); json.AddLong("CUserId", cUserId); json.Add("CustomName", customName); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.SAVE_CONTACTS_REQUEST_KEY, json.ToBytes()); this.Send(segmentWrapper); }
public IActionResult SaveQuery([FromBody] JsonDict jsonDict) { var queryDict = jsonDict["query"] as JsonDict; var queryName = jsonDict["queryName"].ToString(); eqService.SaveQueryDict(queryDict, queryName); JsonDict dict = new JsonDict(); dict.Add("result", "OK"); return(Json(dict)); }
public void GetContacts(long oUserId, string keyword, int pageNum, int pageSize) { var json = new JsonDict(); json.AddLong("OUserId", oUserId); json.Add("Keyword", keyword); json.AddInt("PageNum", pageNum); json.AddInt("PageSize", pageSize); ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.GET_CONTACTS_REQUEST_KEY, json.ToBytes()); this.Send(segmentWrapper); }
private JsonValue readJsonValueFormat0(Stream stream, ChunkState state) { byte type = (byte)stream.ReadByte(); if (type == 0) { return(null); } else if (type == 1) { return(false); } else if (type == 2) { return(true); } else if (type == 3) { return(stream.ReadInt64Optim()); } else if (type == 4) { return(stream.ReadUInt64Optim()); } else if (type == 5) { return(BitConverter.ToDouble(stream.Read(8), 0)); } else if (type >= _stringCodeFirst && type <= _stringCodeLast) { var str = stream.Read(readLength(stream, type, _stringCodeFirst, _stringCodeLast)).FromUtf8(); return(str); } else if (type >= _listCodeFirst && type <= _listCodeLast) { var count = readLength(stream, type, _listCodeFirst, _listCodeLast); var result = new JsonList(); for (int i = 0; i < count; i++) { result.Add(readJsonValueFormat0(stream, state)); } return(result); } else if (type >= _dictCodeFirst && type <= _dictCodeLast) { var count = readLength(stream, type, _dictCodeFirst, _dictCodeLast); var result = new JsonDict(); for (int i = 0; i < count; i++) { byte keyType = (byte)stream.ReadByte(); string key; if (keyType == 255) { key = state.PropNames[(int)stream.ReadUInt32Optim()]; } else { key = stream.Read(readLength(stream, keyType, 0, 254)).FromUtf8(); // state.PropNameIds.Add(key, state.PropNameIds.Count); - only needed for writing, which never shares state with reading so might as well not bother to update this one state.PropNames.Add(key); } result.Add(key, readJsonValueFormat0(stream, state)); } return(result); } else { throw new Exception(); } }