Note that there are some explanatory texts on larger screens.

plurals
  1. POsocket.io emit data will disconnect the client
    primarykey
    data
    text
    <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>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload