Note that there are some explanatory texts on larger screens.

plurals
  1. POSocket.IO using XHR-polling in IE
    primarykey
    data
    text
    <p>I'm using NodeJS and Socket.IO to implement persistent connections between my server and the clients. The Socket.IO-server itself connects to another PHP server that processes the incoming messages and sends the result back to NodeJS. There, the message is modified a bit and sent back to the client.</p> <p>So far, everything is working fine. Chrome, Firefox and Opera are using the native websockets, and all messages are received correctly.</p> <p>However, Internet Explorer and Iceweasel are using the XHR-polling fallback which behaves a bit weird ... The client receives exactly two messages, after this the client can send messages to the server, yet no message is sent back to the client. The message sent from the XHR-client are received and processed correctly - every <strong>websocket</strong> client gets the message sent.</p> <p>Using loglevel 3 in Socket.IO I get the following output:</p> <pre><code>debug: clearing poll timeout debug: xhr-polling writing 5:::{"message":"..."} debug: set close timeout for client VjrHOXHjjg76bD_qx46C debug: setting request GET /socket.io/1/xhr-polling/VjrHOXHjjg76bD_qx46C?t=1345663246573 debug: setting poll timeout debug: clearing poll timeout debug: xhr-polling writing �262�5:::{"message":"another message ..."}�200�5:::{"message":"message #3 ..."} debug: set close timeout for client VjrHOXHjjg76bD_qx46C debug: discarding transport debug: cleared close timeout for client VjrHOXHjjg76bD_qx46C </code></pre> <p>The first message (log line #2) is received by the XHR-client, yet those messages in line #7 disappear. I've also noticed the special chars in line #7, yet I don't know if they are responsible for the bug.</p> <p>When sending a message to the server, the debug output is:</p> <pre><code>debug - xhr-polling received data packet 5:::{"message":"input by the client"} </code></pre> <p>This message also isn't sent back to the XHR-client, yet every connected websocket-client receives it.</p> <p>To make things even more crazy, everything works fine in IE if I turn on the development tools (F12).</p> <p>The NodeJS client that connects to the PHP server itself is quite simple (using the simpletcp library):</p> <pre><code>// Client is the simpletcp-client client.on("data", function(data) { var msgData; try { msgData = JSON.parse(data.toString("utf8")); } catch(e) { console.log("JSON-parse error!"); return; } var socket = getsock(msgData.sid); // msgData.sid is the socket.id to identify the socket if(socket == null) { console.log("Client not found!"); return; } socket.emit("message", { "message" : msgData.message }); }); </code></pre> <p>What I'm asking now - is this a Socket.IO bug or is something in my script wrong?</p>
    singulars
    1. This table or related slice is empty.
    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.
    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