public string GetReaderChooseSeatRecord(string cardNum, int pageIndex, int pageSize) { request = new SocketRequest(); request.RequestMethod = RequestMethodEnum.GetReaderChooseSeatRecord; request.Parameters.Add(cardNum); request.Parameters.Add(pageIndex); request.Parameters.Add(pageSize); return(CallService(request)); }
public string GetViolateDiscipline(string cardNum, int pageIndex, int pageSize) { request = new SocketRequest(); request.RequestMethod = RequestMethodEnum.GetViolateDiscipline; request.Parameters.Add(cardNum); request.Parameters.Add(pageIndex); request.Parameters.Add(pageSize); return(CallService(request)); }
public string CancelBespeakLog(int bespeakId, string remark) { //初始化请求包 request = new SocketRequest(); request.RequestMethod = RequestMethodEnum.CancelBespeakLog; request.Parameters.Add(bespeakId); request.Parameters.Add(remark); return(CallService(request)); }
public string ChangeSeat(string cardNo, string seatNo, string readingRoom) { request = new SocketRequest(); request.RequestMethod = RequestMethodEnum.ChangeSeat; request.Parameters.Add(cardNo); request.Parameters.Add(seatNo); request.Parameters.Add(readingRoom); return(CallService(request)); }
private bool HasRequestErros(ref SocketRequest request) { if (request.HasErrors) { request.ProcessResponse(ActionResult.Json("", ResponseStatus.ERROR, request.InternalErrorMessage), clientSocket, null); return(true); } return(false); }
/// <summary> /// Send the socket request /// </summary> /// <param name="transaction">index, top25securities, ticker</param> /// <param name="startOrStop">start or stop the transactions</param> public void Send(string transaction, bool startOrStop) { Start(); Log.Information("Sending command to socket. Transaction: {0}, Start: {1}", transaction, startOrStop); var request = new SocketRequest(startOrStop, transaction); var json = JsonConvert.SerializeObject(request); Log.Verbose(json); _websocket.Send(json); }
public ActionResult IsValidToken(string token, SocketRequest request) { bool valid = TokenRepository.Instance.IsValid(token, ref request); string msg = (valid ? "You have a valid token" : "You have a invalid token"); return(ActionResult.Json(new OperationResult(valid, (valid ? 600 : 500), msg), (valid ? 600 : 500), msg)); }
public string SubmitBespeakInfo(string cardNo, string roomNum, string seatNum, string bespeakDatetime, string remark) { request = new SocketRequest(); request.RequestMethod = RequestMethodEnum.SubmitBespeakInfo; request.Parameters.Add(cardNo); request.Parameters.Add(roomNum); request.Parameters.Add(seatNum); request.Parameters.Add(bespeakDatetime); request.Parameters.Add(remark); return(CallService(request)); }
/// <summary> /// 预约签到 /// </summary> /// <param name="seatNo">座位编号(9位)</param> /// <param name="roomNo">阅览室编号</param> /// <param name="studentNo">学生学号</param> /// <param name="besapeakTime">预约的时间(立即预约次处值无效可为空)</param> /// <param name="isNowBesapeak">是否是立即预约</param> /// <returns></returns> public string SubmitBesapeskSeat(string seatNo, string roomNo, string studentNo, string besapeakTime, bool isNowBesapeak) { request = new SocketRequest(); request.RequestMethodType = "SubmitBesapeskSeat"; request.Parameters.Add(seatNo); request.Parameters.Add(roomNo); request.Parameters.Add(studentNo); request.Parameters.Add(besapeakTime); request.Parameters.Add(isNowBesapeak); return(CallService(request)); }
public void StartPlay() { SocketRequest req = new SocketRequest(); req.p1 = GUIDHelper.generate(); req.p2 = "join"; req.p3 = DataHelper.GetInstance().LoadToken(dbManager); req.p4 = SystemInfo.deviceUniqueIdentifier; req.p5 = "10"; SendBytes(ProtoHelper.Proto2Bytes(req)); }
private void OnWebSocketOpen(WebSocket webSocket) { Debug.Log("WebSocket open! now login."); SocketRequest req = new SocketRequest(); req.p1 = GUIDHelper.generate(); req.p2 = "login"; req.p3 = DataHelper.GetInstance().LoadToken(dbManager); req.p4 = SystemInfo.deviceUniqueIdentifier; webSocket.Send(DESHelper.EncodeBytes(GZipHelper.compress(ProtoHelper.Proto2Bytes(req)), AppContext.GetInstance().getDesKey())); }
/// <summary> /// Register Task for UI layer. /// </summary> /// <param name="task">Task.</param> public void RegisterSocketTask(SocketTask task) { if (task != null) { SocketRequest sockReq = task.request as SocketRequest; if (sockReq != null && !TaskQueue.ContainsKey(sockReq.Act)) { TaskQueue[sockReq.Act] = task; } } }
/// <summary> /// Read bytes coming in on the socket, and if it's a TCP request handle it. /// </summary> /// <param name="bytes">Byte array containing data on the socket</param> /// <param name="length">Content length</param> private void ReadBytes(byte[] bytes, int length) { using (var memoryStream = new MemoryStream(bytes, 0, length)) using (var binaryReader = new BinaryReader(memoryStream)) { var request = new SocketRequest(); // First 8 bits of the IP header contain the version and header length var versionAndHeaderLength = binaryReader.ReadByte(); var headerLength = (versionAndHeaderLength & 0x0F) * 4; var version = versionAndHeaderLength >> 4; // Next 8 bits contain the diffe-rentiated services. var bDifferentiatedServices = binaryReader.ReadByte(); // Next 16 bits hold the total length of the datagram var totalLength = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16()); // Next 16 bits for identification var identification = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16()); // Next 16 bits contain flags and fragmentation offset var flagsAndOffsets = (ushort)IPAddress.NetworkToHostOrder(binaryReader.ReadInt16()); // Next 8 bits have the TTL value var ttl = binaryReader.ReadByte(); // Next 8 bits have the protocol var protocol = binaryReader.ReadByte(); // Next 16 bits contain the checksum of the header var checksum = IPAddress.NetworkToHostOrder(binaryReader.ReadInt16()); // Next 32 bits have source IP var sourceIPAddress = (uint)binaryReader.ReadInt32(); request.IPAddress = new IPAddress(sourceIPAddress); // Next 32 bits have destination IP var destinationIPAddress = (uint)binaryReader.ReadInt32(); var dataSize = totalLength - headerLength; var data = new byte[dataSize]; Array.Copy(bytes, headerLength, data, 0, dataSize); // currently only monitoring traffic over TCP, however // this could be extended to monitor UDP as well. if (protocol == 6) { ReadTCP(data, dataSize, request); } } }
private void DoTake(bool take) { SocketRequest sr = new SocketRequest(); sr.p1 = GUIDHelper.generate(); sr.p2 = "takeLandlord"; sr.p3 = LocalToken(); sr.p4 = SystemInfo.deviceUniqueIdentifier; sr.p5 = AppContext.GetInstance().Watch.gameId.ToString(); sr.p6 = AppContext.GetInstance().Watch.seatId.ToString(); sr.p7 = take.ToString(); SendBytes(ProtoHelper.Proto2Bytes(sr)); }
/// <summary> /// 读者更换座位 /// </summary> /// <param name="cardNo"></param> /// <param name="seatNum"></param> /// <param name="readingRoomNum"></param> /// <returns></returns> public string ChangeSeat(string cardNo, string seatNum, string readingRoomNum) { try { lock (this.client) { client.Connect(); request = new SocketRequest(); request.MethodName = "ChangeSeat"; request.Parameters.Add(cardNo); request.Parameters.Add(seatNum); request.Parameters.Add(readingRoomNum); request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak; request.Target = schoolNum; request.MsgType = TcpMsgDataType.Relay; if (request != null) { client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request)); Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName); } autoConnectEvent.WaitOne(20000); if (response == null) { throw new Exception("连接超时。"); } else if (!isError && response.MethodName.Equals("ChangeSeat") && string.IsNullOrEmpty(response.ErrorMsg)) { return(response.Result.ToString()); } else if (!string.IsNullOrEmpty(response.ErrorMsg)) { throw new Exception(response.ErrorMsg); } else { return(null); } } } catch (Exception ex) { throw ex; } finally { client.Disconnect(); request = null; response = null; } }
void Main() { FleckLog.Level = LogLevel.Debug; var server = new WebSocketServer("wss://0.0.0.0:8181"); var cert = CertManager.GetCert("localhost", TimeSpan.FromDays(3650), "devpwd", AppDomain.CurrentDomain.BaseDirectory + "cert.dat"); CertManager.ActivateCert(cert); server.Certificate = cert; server.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls11 | System.Security.Authentication.SslProtocols.Tls12; server.Start(socket => { socket.OnOpen = () => { Console.WriteLine("Open!"); allSockets.Add(socket); }; socket.OnClose = () => { Console.WriteLine("Close!"); allSockets.Remove(socket); }; socket.OnMessage = message => { try { var rq = SocketRequest.DeserializeObject(message); switch (rq.cmd.ToLower()) { case "start": StartSign(message, socket); break; default: break; } } catch (Exception ex) { SocketReponse socketReponse = new SocketReponse(); socketReponse.Code = 1; socketReponse.Message = ex.Message; socket.Send(socketReponse.ToString()); } Console.WriteLine(message); }; }); }
public bool UpdateBookLogsState(int bookNo) { // AsyncTcpClient.AsyncTcpClient client = new AsyncTcpClient.AsyncTcpClient(ip.IP, ip.Port); try { lock (this.client) { client.Connect(); request = new SocketRequest(); request.MethodName = "UpdateBookLogsState"; request.Parameters.Add(bookNo); request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak; request.Target = schoolNum; request.MsgType = TcpMsgDataType.Relay; if (request != null) { client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request)); Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName); } autoConnectEvent.WaitOne(20000); if (response == null) { throw new Exception("连接超时。"); } else if (!isError && response.MethodName.Equals("UpdateBookLogsState") && string.IsNullOrEmpty(response.ErrorMsg)) { return((bool)response.Result); } else if (!string.IsNullOrEmpty(response.ErrorMsg)) { throw new Exception(response.ErrorMsg); } else { return(false); } } } catch (Exception ex) { throw ex; } finally { client.Disconnect(); request = null; response = null; } }
public InterceptorHandleResult PreHandle(SocketRequest socketRequest) { string controllerName = socketRequest.Controller.GetType().Name; string actionName = socketRequest.Action; if (socketRequest.Controller.GetType().Name.Equals("AuthorizationController") || socketRequest.Controller.GetType().Name.Equals("ServerInfoController")) { return(new InterceptorHandleResult(false, true, "", "")); } var paramToken = socketRequest.Parameters.FirstOrDefault(p => p.Name.Equals("authorization")); if (paramToken == null) { return(new InterceptorHandleResult(true, false, "Unauthorized. Check 'authorization' parameter in request body", false)); } string token = paramToken.Value.ToString(); if (!TokenRepository.Instance.IsValid(token)) { return(new InterceptorHandleResult(true, false, "Invalid or expired token. Check 'authorization' parameter in request body", "")); } var userToken = TokenRepository.Instance.GetToken(token); var user = userToken.User; if (user.IsRolesAccessControllerEnabled) { var role = user.Roles.FirstOrDefault(r => r.Controller.Equals(controllerName) && r.ActionName.Equals(actionName)); if (role == null) { return(new InterceptorHandleResult(false, true, "Access granted", "")); } if (role.EnableAccess) { return(new InterceptorHandleResult(false, true, "Access granted", "")); } else { return(new InterceptorHandleResult(true, false, "Access danied", "")); } } return(new InterceptorHandleResult(false, true, "Access granted", "")); }
public SeatManage.ClassModel.ReaderInfo CheckAndGetReaderInfo(UserInfo user) { try { lock (this.client) { client.Connect();//连接 request = new SocketRequest(); request.MethodName = "CheckAndGetReaderInfo"; request.Parameters.Add(user); request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak; request.Target = schoolNum; request.MsgType = TcpMsgDataType.Relay; if (request != null) { client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request)); Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName); } autoConnectEvent.WaitOne(20000); if (response == null) { throw new Exception("连接超时。"); } else if (!isError && response.MethodName.Equals("CheckAndGetReaderInfo") && string.IsNullOrEmpty(response.ErrorMsg)) { return(response.Result as ReaderInfo); } else if (!string.IsNullOrEmpty(response.ErrorMsg)) { throw new Exception(response.ErrorMsg); } else { return(null); } } } catch (Exception ex) { throw ex; } finally { request = null; response = null; client.Disconnect(); } }
private void HandldCommonTask(SocketTask task) { if (task.request.type == BaseSocketRequestType.Common_Socket_Request) { SocketRequest sockReq = task.request as SocketRequest; //记录下已经发送数据的 Task TaskQueue[sockReq.Act] = task; //send to server if (task.respType != TaskResponse.Donot_Send) { ConsoleEx.DebugLog("Socket to be sent : " + sockReq.toJson()); Conn.Write(sockReq.toJson()); } } }
private void ResolveActionParameters(ref SocketRequest request) { foreach (ParameterInfo pi in method.GetParameters()) { if (pi.ParameterType == typeof(SocketRequest)) { request.AddParameter(new RequestParameter("request", request)); continue; } if (!request.Parameters.Any(rp => rp.Name.Equals(pi.Name))) { throw new Exception($"The parameter '{pi.Name}', required on {request.Controller.GetType().Name}/{request.Action}, was not received"); } } }
/// <summary> /// 推送消息处理 /// </summary> /// <param name="msg"></param> private void PubshMsg(SocketMsgBase msg) { try { if (msg is SocketRequest) { SocketRequest srMsg = msg as SocketRequest; appPush.MsgPush((string)srMsg.Parameters[0]); Console.WriteLine("{0:M} {1:t}:推送用户消息:{2}", DateTime.Now, DateTime.Now, (string)srMsg.Parameters[0]); } } catch (Exception ex) { WriteLog.Write(string.Format("PubshMsg执行遇到异常:{0},异常来自:{1}", ex.Message, ex.Source)); } }
public Dictionary <string, ReadingRoomSeatUsedState_Ex> GetAllRoomSeatUsedState() { try { lock (this.client) { client.Connect(); request = new SocketRequest(); request.MethodName = "GetAllRoomSeatUsedState"; request.SubSystem = TcpSeatManageSubSystem.WeiXinSeatBespeak; request.Target = schoolNum; request.MsgType = TcpMsgDataType.Relay; if (request != null) { client.Send(SeatManage.SeatManageComm.ByteSerializer.ObjectToByte(request)); Console.WriteLine("请求客户端{0}执行{1}方法已发送,等待返回结果…", request.Target, request.MethodName); } autoConnectEvent.WaitOne(20000); if (response == null) { throw new Exception("连接超时。"); } else if (!isError && response.MethodName.Equals("GetAllRoomSeatUsedState") && string.IsNullOrEmpty(response.ErrorMsg)) { return(response.Result as Dictionary <string, ReadingRoomSeatUsedState_Ex>); } else if (!string.IsNullOrEmpty(response.ErrorMsg)) { throw new Exception(response.ErrorMsg); } else { return(null); } } } catch (Exception ex) { throw ex; } finally { client.Disconnect(); request = null; response = null; } }
public static byte[] Serialize <T>(this SocketRequest <T> obj) { byte[] data; using (var stream = new MemoryStream()) { var typedata = ASCIIEncoding.ASCII.GetBytes(obj.TypeData); var seporator = ASCIIEncoding.ASCII.GetBytes("|"); stream.Write(typedata, 0, typedata.Length); stream.Write(seporator, 0, seporator.Length); Serializer.Serialize(stream, obj); data = stream.ToArray(); } return(data); }
public void TipToDealer() { string requestStringData = "{\"userId\":\"" + ((int.Parse(PlayerManager.instance.GetPlayerGameData().userId)).ToString() + "\"," + "\"tableId\":\"" + int.Parse(TABLE_ID)).ToString() + "\"}"; Debug.Log("i am herejhdsf " + requestStringData); object requestObjectData = Json.Decode(requestStringData); SocketRequest request = new SocketRequest(); request.emitEvent = "allTipData"; request.plainDataToBeSend = null; request.jsonDataToBeSend = requestObjectData; request.requestDataStructure = requestStringData; socketRequest.Add(request); }
private SocketRequest GetRequestSocket() { if (requestBody == null) { return(null); } SocketRequest request = null; try { string path = requestBody.Action; controllerName = requestBody.Controller; actionName = requestBody.Action; request = new SocketRequest(); request.SetClientSocket(clientSocket); request.Action = actionName; request.Controller = controllerManager.InstantiateController(controllerName, requestBody); var parameters = typedObjManager.FillParameters(requestBody.Parameters, actionName, request.Controller); if (parameters != null) { for (int i = 0; i < parameters.Count; i++) { request.AddParameter(parameters[i]); } } if (!typedObjManager.ExistsAction(actionName, controllerName)) { throw new Exception($"Action '{actionName}' not exists in controller '{controllerName}'"); } return(request); } catch (Exception ex) { logger.WriteLog(ex.Message + "\n" + ex.StackTrace, controllerName, actionName, ServerLogType.ERROR); request.HasErrors = true; request.InternalErrorMessage = ex.Message; return(request); } }
// EMIT_METHODS --------------------------------------------------------------------------------------------------------------------------------------------------------- #region EMIT_METHODS public void SendTopUpRequest(int coinsToAdd) { string requestStringData = "{\"userId\":\"" + PlayerManager.instance.GetPlayerGameData().userId + "\"," + "\"tableId\":\"" + TABLE_ID + "\"," + "\"coins\":\"" + coinsToAdd + "\"}"; object requestObjectData = Json.Decode(requestStringData); SocketRequest request = new SocketRequest(); request.emitEvent = "topUp"; request.plainDataToBeSend = null; request.jsonDataToBeSend = requestObjectData; request.requestDataStructure = requestStringData; socketRequest.Add(request); }
/// <summary> /// Logs and saves an HTTP <see cref="SocketRequest"/> /// </summary> /// <param name="request">The <see cref="SocketRequest"/> to be traced, and logged.</param> public void TraceSocketRequest(SocketRequest request) { var httpTrace = new HttpTrace { ClientIPAddress = request.IPAddress, ContentSize = request.ContentLength, HttpCommand = request.HttpCommand, RemoteUri = request.RemoteUri, RequestDate = request.RequestDateTime, StatusCode = request.StatusCode, Method = request.Method }; this.HttpTraceRepository.CreateTrace(httpTrace); this.HttpTraceRepository.SaveChanges(); this.GUI.TraceViewModel.CurrentTrace = httpTrace; }
public void RequestForMatchHistory() { FoldData requestData = new FoldData(); requestData.userId = "" + PlayerManager.instance.GetPlayerGameData().userId; requestData.tableId = TABLE_ID; string requestStringData = JsonMapper.ToJson(requestData); object requestObjectData = Json.Decode(requestStringData); SocketRequest request = new SocketRequest(); request.emitEvent = "matchPlayLogs"; request.plainDataToBeSend = null; request.jsonDataToBeSend = requestObjectData; request.requestDataStructure = requestStringData; socketRequest.Add(request); }
public object RunAction(string receivedData, SocketRequest request) { SocketAppServerClient.RequestBody rb = JsonConvert.DeserializeObject <SocketAppServerClient.RequestBody>(receivedData, AppServerConfigurator.SerializerSettings); if (rb.Controller.Equals("ServerInfoController") && rb.Action.Equals("FullServerInfo")) { return(new ServerInfoController().FullServerInfo()); } string cacheResultKey = BuildCacheResultKey(rb); SubServer targetServer = GetAvailableSubServer(); if (targetServer == null) { CheckAllocateNewInstance(); if (retried) { return(ResolveResultOnUreachableServer(cacheResultKey)); } else { retried = true; return(RunAction(receivedData, request)); } } using (ISocketClientConnection client = BuildClient(targetServer)) { client.SendRequest(rb); SocketAppServerClient.OperationResult result = client.GetResult(); if (EnabledCachedResultsForUnreachableServers) { CacheRepository <SocketAppServerClient.OperationResult> .Set(cacheResultKey, result, 380); } targetServer.RefreshLifetimeIfHas(); return(ActionResult.Json(result)); } }