123456789101112131415161718192021222324252627282930 |
- using EZXR.Glass.Network.SocketIOClient.Arguments;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace EZXR.Glass.Network.SocketIOClient.Parsers
- {
- class MessageAckParser : IParser
- {
- public Task ParseAsync(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);
- }
- }
- return Task.CompletedTask;
- }
- }
- }
|