public Task ParseAsync(ResponseTextParser rtp) { var regex = new Regex($@"^42{rtp.Namespace}\d*\[""([*\.\s\w-]+)"",([\s\S]*)\]$");//$@"^42{rtp.Namespace}\d*\[(.+)\]$"//$@"^42{rtp.Namespace}\d*\[""([*\s\w-]+)"",([\s\S]*)\]$" if (regex.IsMatch(rtp.Text)) { var groups = regex.Match(rtp.Text).Groups; string eventName = groups[1].Value; var args = new ResponseArgs { Text = groups[2].Value, RawText = rtp.Text }; if (rtp.Socket.EventHandlers.ContainsKey(eventName)) { var handler = rtp.Socket.EventHandlers[eventName]; handler(args); } else { rtp.Socket.InvokeUnhandledEvent(eventName, args); } rtp.Socket.InvokeReceivedEvent(eventName, args); return(Task.CompletedTask); } else { rtp.Parser = new MessageAckParser(); return(rtp.ParseAsync()); } }
public void Parse(ResponseTextParser rtp) { var regex = new Regex($@"^43{rtp.Namespace}(\d+)\[([\s\S]*)\]$"); if (regex.IsMatch(rtp.Text)) { var groups = regex.Match(rtp.Text).Groups; int packetId = int.Parse(groups[1].Value); if (rtp.Socket.Callbacks.ContainsKey(packetId)) { var handler = rtp.Socket.Callbacks[packetId]; handler(new ResponseArgs { Text = groups[2].Value, RawText = rtp.Text }); rtp.Socket.Callbacks.Remove(packetId); } } else { rtp.Parser = new ErrorParser(); rtp.Parse(); } }
public Task ParseAsync(ResponseTextParser rtp) { rtp.Socket._isHeartbeatFinished = true; rtp.Socket._timeoutNumber = 0; rtp.Socket._heartbeatDelay = 0; rtp.Socket._isConnectTimeout = false; return(rtp.Socket.InvokePongAsync()); }
public Task ParseAsync(ResponseTextParser rtp) { if (rtp.Text == "41" + rtp.Namespace) { return(rtp.Socket.InvokeClosedAsync()); } else { rtp.Parser = new MessageEventParser(); return(rtp.ParseAsync()); } }
public void Parse(ResponseTextParser rtp) { var regex = new Regex($@"^44{rtp.Namespace}([\s\S]*)$"); if (regex.IsMatch(rtp.Text)) { var groups = regex.Match(rtp.Text).Groups; rtp.ErrorHandler(new ResponseArgs { Text = groups[1].Value, RawText = rtp.Text }); } }
public void Parse(ResponseTextParser rtp) { if (rtp.Text.StartsWith("0{\"sid\":\"")) { string message = rtp.Text.TrimStart('0'); var args = JsonConvert.DeserializeObject <OpenedArgs>(message); rtp.OpenHandler(args); } else { rtp.Parser = new ConnectedParser(); rtp.Parse(); } }
public Task ParseAsync(ResponseTextParser rtp) { if (rtp.Text.StartsWith("0{\"sid\":\"")) { string message = rtp.Text.TrimStart('0'); var args = JsonConvert.DeserializeObject <OpenedArgs>(message); return(rtp.Socket.InvokeOpenedAsync(args)); } else { rtp.Parser = new ConnectedParser(); return(rtp.ParseAsync()); } }
public void Parse(ResponseTextParser rtp) { var regex = new Regex($@"^42{rtp.Namespace}\d*\[(.+)\]$"); if (regex.IsMatch(rtp.Text)) { var groups = regex.Match(rtp.Text).Groups; string text = groups[1].Value; var formatter = new DataFormatter(); var data = formatter.Format(text); var eventHandlerArg = new ResponseArgs { RawText = rtp.Text }; string eventName = JsonConvert.DeserializeObject <string>(data[0]); if (data.Count > 1) { eventHandlerArg.Text = data[1]; } if (rtp.Socket.EventHandlers.ContainsKey(data[0])) { var handlerBox = rtp.Socket.EventHandlers[data[0]]; handlerBox.EventHandler?.Invoke(eventHandlerArg); if (handlerBox.EventHandlers != null) { for (int i = 0; i < handlerBox.EventHandlers.Count; i++) { var arg = new ResponseArgs { RawText = rtp.Text }; if (i + 2 <= data.Count - 1) { arg.Text = data[i + 2]; } handlerBox.EventHandlers[i](arg); } } } else { rtp.UncaughtHandler(eventName, eventHandlerArg); } rtp.ReceiveHandler(eventName, eventHandlerArg); } else { rtp.Parser = new MessageAckParser(); rtp.Parse(); } }
public Task ParseAsync(ResponseTextParser rtp) { var regex = new Regex($@"^44{rtp.Namespace}([\s\S]*)$"); if (regex.IsMatch(rtp.Text)) { var groups = regex.Match(rtp.Text).Groups; rtp.Socket.InvokeErrorEvent(new ResponseArgs { Text = groups[1].Value, RawText = rtp.Text }); } return(Task.CompletedTask); }
public Task ParseAsync(ResponseTextParser rtp) { if (rtp.Text == "40" + rtp.Namespace) { return(rtp.Socket.InvokeConnectedAsync()); } else if (rtp.Text == "40") { return(Task.CompletedTask); } else { rtp.Parser = new DisconnectedParser(); return(rtp.ParseAsync()); } }