title: socket.io emit data will disconnect the client
body: <p>I am working on a chat and I noticed that sometimes connection between my node.js server and iOS client will be disconnected right after server emitted some data.</p>
  
  <p>I emited two events continuously, based on the logs on the client, it appears that the emitted data are "combined":</p>
  
  <pre><code>doQueue() &gt;&gt; 0
  2013-03-16 05:11:45.390 [833:907] start/reset timeout
  2013-03-16 05:11:45.491 [833:907] onData �187�5:::{"name":"threadInformation","args":[{"threadObjects":[{"threadId":"heacrsi1","users":[{"userName":"tester","userId":"123"},{"userName":"Name","userId":"123"}]}]}]}�171�5:::{"name":"message","args":[{"fromUserName":"tester","fromUserId":"123","text":"heiiiii this is going to trigger a message for u!","threadId":"heacrsi1","messageId":1}]}
  2013-03-16 05:11:45.493 [833:907] start/reset timeout
  2013-03-16 05:11:45.495 [833:907] disconnect
  2013-03-16 05:11:45.496 [833:907] onDisconnect()
  </code></pre>
  
  <p>I can reproduce this problem consistently. Is it normal that the data is "combined"? Why is this disconnection happening?</p>
  
  <p>EDIT: I managed to simplify my issues into something really simple:</p>
  
  <p>This piece of code is okay:</p>
  
  <pre><code>    socket.on('online', function(data){
          socket.emit("message", {"testField":"testData2"});
      });
  </code></pre>
  
  <p>This piece of code disconnects the client!:</p>
  
  <pre><code>    socket.on('online', function(data){
          socket.emit("message", {"testField":"testData"});
          socket.emit("message", {"testField":"testData2"});
      });
  </code></pre>
  
  <p>Are we not allowed to emit something to a socket continuously? Am I supposed to implement some sort of queue myself to ensure every socket.emit is successful before i emit the next data?</p>
  
  <p>===== UPDATE =====</p>
  
  <p>p/s 1: This only happens on objective-c client. If I use a javascript client, I can receive the two events.</p>
  
  <p>p/s 2: I managed to reproduce the problem in a very simple setup:
  a. First, a server that simply emits two events when a connection is made:
      io.sockets.on('connection', function(socket) 
      {
          socket.emit("message", {"text":"welcome2!"});
          socket.emit("message", {"text":"welcome3!"});
      }
  b. Second, a simple iOS client (using socket.IO-obj library from here:<a href="https://github.com/pkyeck/socket.IO-objc" rel="nofollow">https://github.com/pkyeck/socket.IO-objc</a>)</p>
  
  <pre><code>- (void) viewDidLoad
  {
      [super viewDidLoad];
      socketIO = [[SocketIO alloc] initWithDelegate:self];
      [socketIO connectToHost:@"192.168.1.87" onPort:5000 withParams:@{@"token":@"avalidtoken"}];
  }
  </code></pre>
  
  <p>c. output from iOS client:</p>
  
  <pre><code>    2013-03-21 01:13:39.355 SocketTesterARC[6391:907] Connecting to socket with URL:         http://192.168.1.87:5000/socket.io/1/?t=16807&amp;token=avalidtoken
      2013-03-21 01:13:39.620 SocketTesterARC[6391:907] didReceiveResponse() 200
      2013-03-21 01:13:39.621 SocketTesterARC[6391:907] connectionDidFinishLoading()         fvSZFJMiIXop5uMayU0t:60:60:xhr-polling
      2013-03-21 01:13:39.622 SocketTesterARC[6391:907] sid: fvSZFJMiIXop5uMayU0t
      2013-03-21 01:13:39.656 SocketTesterARC[6391:907] heartbeatTimeout: 67.000000
      2013-03-21 01:13:39.657 SocketTesterARC[6391:907] transports: (
          "xhr-polling"
      )
      2013-03-21 01:13:39.658 SocketTesterARC[6391:907] xhr polling supported -&gt; using it         now
      2013-03-21 01:13:39.680 SocketTesterARC[6391:907] onData 1::
      2013-03-21 01:13:39.681 SocketTesterARC[6391:907] start/reset timeout
      2013-03-21 01:13:39.683 SocketTesterARC[6391:907] connected
      2013-03-21 01:13:39.684 SocketTesterARC[6391:907] onConnect()
      2013-03-21 01:13:39.685 SocketTesterARC[6391:907] connected to server successfully
      2013-03-21 01:13:39.686 SocketTesterARC[6391:907] doQueue() &gt;&gt; 0
      2013-03-21 01:13:39.687 SocketTesterARC[6391:907] start/reset timeout
      2013-03-21 01:13:39.698 SocketTesterARC[6391:907] onData �52�5:::{"name":"message","args":[{"text":"welcome2!"}]}�52�5:::{"name":"message","args":[{"text":"welcome3!"}]}
      2013-03-21 01:13:39.700 SocketTesterARC[6391:907] start/reset timeout
      2013-03-21 01:13:39.701 SocketTesterARC[6391:907] disconnect
      2013-03-21 01:13:39.702 SocketTesterARC[6391:907] onDisconnect()
      2013-03-21 01:13:39.708 SocketTesterARC[6391:907] disconnected! error: Error Domain=SocketIOError Code=-2 "The operation couldn’t be completed. (SocketIOError error -2.)"
      2013-03-21 01:13:44.687 SocketTesterARC[6391:907] disconnect!
  </code></pre>