public static AckMessage Deserialize(string rawMessage) { AckMessage msg = new AckMessage(); // '6:::' [message id] '+' [data] // 6:::4 // 6:::4+["A","B"] msg.RawMessage = rawMessage; string[] args = rawMessage.Split(SPLITCHARS, 4); if (args.Length == 4) { msg.Endpoint = args[2]; int id; string[] parts = args[3].Split(new char[] { '+' }); if (parts.Length > 1) { if (int.TryParse(parts[0], out id)) { msg.AckId = id; msg.MessageText = parts[1]; Match payloadMatch = reAckComplex.Match(msg.MessageText); if (payloadMatch.Success) { msg.Json = new JsonEncodedEventMessage(); msg.Json.args = new string[] { payloadMatch.Groups["payload"].Value }; } } } } return(msg); }
public static AckMessage Deserialize(string rawMessage) { AckMessage msg = new AckMessage(); // '6:::' [message id] '+' [data] // 6:::4 // 6:::4+["A","B"] msg.RawMessage = rawMessage; string[] args = rawMessage.Split(SPLITCHARS, 4); if (args.Length == 4) { msg.Endpoint = args[2]; int id; string[] parts = args[3].Split(new char[] {'+'}); if (parts.Length > 1) { if (int.TryParse(parts[0], out id)) { msg.AckId = id; msg.MessageText = parts[1]; Match payloadMatch = reAckComplex.Match(msg.MessageText); if (payloadMatch.Success) { msg.Json = new JsonEncodedEventMessage(); msg.Json.Args = new string[] {payloadMatch.Groups["payload"].Value}; } } } } return msg; }
public static IMessage Factory(string rawMessage) { if (reMessageType.IsMatch(rawMessage)) { char id = rawMessage.First(); switch (id) { case '0': return(DisconnectMessage.Deserialize(rawMessage)); case '1': return(ConnectMessage.Deserialize(rawMessage)); case '2': return(new Heartbeat()); case '3': return(TextMessage.Deserialize(rawMessage)); case '4': return(JSONMessage.Deserialize(rawMessage)); case '5': return(EventMessage.Deserialize(rawMessage)); case '6': return(AckMessage.Deserialize(rawMessage)); case '7': return(ErrorMessage.Deserialize(rawMessage)); case '8': return(new NoopMessage()); default: Trace.WriteLine(string.Format("Message.Factory undetermined message: {0}", rawMessage)); return(new TextMessage()); } } else { Trace.WriteLine(string.Format("Message.Factory did not find matching message type: {0}", rawMessage)); return(new NoopMessage()); } }
public static IMessage Factory(string rawMessage) { if (reMessageType.IsMatch(rawMessage)) { char id = rawMessage.First(); switch (id) { case '0': return(DisconnectMessage.Deserialize(rawMessage)); case '1': return(ConnectMessage.Deserialize(rawMessage)); case '2': return(new Heartbeat()); case '3': return(TextMessage.Deserialize(rawMessage)); case '4': return(null); case '5': return(EventMessage.Deserialize(rawMessage)); case '6': return(AckMessage.Deserialize(rawMessage)); case '7': return(ErrorMessage.Deserialize(rawMessage)); case '8': return(new NoopMessage()); default: return(new TextMessage()); } } else { return(new NoopMessage()); } }
public static AckMessage Deserialize(string rawMessage) { AckMessage msg = new AckMessage(); msg.RawMessage = rawMessage; string askId = rawMessage.Substring(2, rawMessage.IndexOf("[") - 2); int id; if (int.TryParse(askId, out id)) { msg.AckId = id; } var groups = new Regex(@"\[([\s\S]*)\]", RegexOptions.IgnoreCase | RegexOptions.Compiled).Match(rawMessage).Groups; msg.RawMessage = groups[0].Value.Replace("\\", ""); //jsonMsg.Event = groups[1].Value; msg.MessageText = groups[1].Value.Replace("\\", "").Trim('"'); return(msg); }
public void Subscribe(string eventName, Func<ISocketEventRequest, RequestResult> eventCallback, Action<ISocketEventResponse> subscribeReadyCallback = null) { this.socket.On(eventName, (msg) => { var dto = JsonConvert.DeserializeObject<SocketEventRequestDto>(msg.Json.Args[0].ToString()); var request = Mapper.Map<SocketEventRequestDto, SocketEventRequest>(dto); var result = eventCallback(request); // Simulate a ack callback because SocketIO4Net doesn't provide one by default. var msgText = JsonConvert.SerializeObject(new object[] { new SocketEventResponseDto() { RequestId = request.RequestId, Status = result.ToString().ToUpper() } }); var ack = new AckMessage() { AckId = msg.AckId, MessageText = msgText }; this.socket.Send(ack); }); var subscribeDto = new SubscribeDto() { Event = eventName, SenderId = this.ClientId }; this.socket.Emit(SUBSCRIBE, subscribeDto, string.Empty, (data) => { var json = data as JsonEncodedEventMessage; var result = JsonConvert.DeserializeObject<SocketEventResponseDto>(json.Args[0]); var response = Mapper.Map<SocketEventResponseDto, SocketEventResponse>(result); if (subscribeReadyCallback != null) { subscribeReadyCallback(response); } }); }
public static IMessage Factory(string rawMessage) { if (Check(rawMessage)) { string message = rawMessage.TrimStart('0'); return(ConnectMessage.Deserialize(message)); } if (ReMessageType.IsMatch(rawMessage)) { char id = rawMessage.First(); switch (id) { case '0': return(DisconnectMessage.Deserialize(rawMessage)); case '1': return(ConnectMessage.Deserialize(rawMessage)); case '2': return(new Heartbeat()); case '3': return(TextMessage.Deserialize(rawMessage)); case '4': return(JSONMessage.Deserialize(rawMessage)); case '5': return(EventMessage.Deserialize(rawMessage)); case '6': return(AckMessage.Deserialize(rawMessage)); case '7': return(ErrorMessage.Deserialize(rawMessage)); case '8': return(new NoopMessage()); default: Trace.WriteLine(string.Format("Message.Factory undetermined message: {0}", rawMessage)); return(new TextMessage()); } } if (rawMessage.IndexOf("[") > 0) { // int index = rawMessage.IndexOf("["); return(AckMessage.Deserialize(rawMessage)); } //if (rawMessage == "3") //{ // return new Heartbeat(); //} else { Trace.WriteLine(string.Format("Message.Factory did not find matching message type: {0}", rawMessage)); return(new NoopMessage()); } }