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());
     }
 }
Beispiel #5
0
        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());
     }
 }
Beispiel #8
0
        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());
     }
 }