diff --git a/Src/SocketIoClientDotNet.net45/Client/Socket.cs b/Src/SocketIoClientDotNet.net45/Client/Socket.cs index 13c3ff0..01e865f 100644 --- a/Src/SocketIoClientDotNet.net45/Client/Socket.cs +++ b/Src/SocketIoClientDotNet.net45/Client/Socket.cs @@ -107,18 +107,21 @@ public override Emitter Emit(string eventString, params object[] args) var _args = new List { eventString }; _args.AddRange(args); + var ack = _args[_args.Count - 1] as IAck; + if (ack != null) + { + _args.RemoveAt(_args.Count - 1); + } + var jsonArgs = Parser.Packet.Args2JArray(_args); var parserType = HasBinaryData.HasBinary(jsonArgs) ? Parser.Parser.BINARY_EVENT : Parser.Parser.EVENT; var packet = new Packet(parserType, jsonArgs); - var lastArg = _args[_args.Count - 1]; - if (lastArg is IAck) + if (ack != null) { log.Info(string.Format("emitting packet with ack id {0}", Ids)); - Acks = Acks.Add(Ids, (IAck)lastArg); - jsonArgs = Parser.Packet.Remove(jsonArgs, jsonArgs.Count - 1); - packet.Data = jsonArgs; + Acks = Acks.Add(Ids, ack); packet.Id = Ids++; }