Node.js Socket.IO在IE中使用XHR轮询

Node.js Socket.IO在IE中使用XHR轮询,node.js,socket.io,Node.js,Socket.io,我使用NodeJS和Socket.IO实现服务器和客户端之间的持久连接。Socket.IO-server本身连接到另一个处理传入消息并将结果发送回NodeJS的PHP服务器。在那里,消息被稍微修改并发送回客户端 到目前为止,一切正常。Chrome、Firefox和Opera正在使用本机websockets,所有消息都被正确接收 然而,Internet Explorer和Iceweasel正在使用XHR轮询回退,其行为有点奇怪。。。客户机正好收到两条消息,在此之后,客户机可以向服务器发送消息,但没

我使用NodeJS和Socket.IO实现服务器和客户端之间的持久连接。Socket.IO-server本身连接到另一个处理传入消息并将结果发送回NodeJS的PHP服务器。在那里,消息被稍微修改并发送回客户端

到目前为止,一切正常。Chrome、Firefox和Opera正在使用本机websockets,所有消息都被正确接收

然而,Internet Explorer和Iceweasel正在使用XHR轮询回退,其行为有点奇怪。。。客户机正好收到两条消息,在此之后,客户机可以向服务器发送消息,但没有消息发送回客户机。正确接收和处理从XHR客户端发送的消息-每个websocket客户端都会收到发送的消息

使用Socket.IO中的loglevel 3,我得到以下输出:

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
第一条消息(日志行#2)由XHR客户端接收,但是第#7行中的消息消失了。我还注意到第7行中的特殊字符,但我不知道它们是否对该错误负责

向服务器发送消息时,调试输出为:

debug - xhr-polling received data packet 5:::{"message":"input by the client"}
此消息也不会发送回XHR客户端,但每个连接的websocket客户端都会收到它

为了让事情变得更疯狂,如果我打开开发工具(F12),IE中的一切都可以正常工作

连接到PHP服务器本身的NodeJS客户端非常简单(使用simpletcp库):

我现在要问的是-这是一个Socket.IO错误还是我的脚本中有什么地方出错了

为了让事情变得更疯狂,如果我转身,一切都会好起来 关于开发工具(F12)

一点也不疯狂。Internet Explorer没有
控制台
对象,直到您打开开发工具(
console.log
引发阻止代码的异常)。删除所有
console.log
行,查看它是否工作。如果您想调试脚本,那么您应该编写自己的自定义调试工具。下面是一个简单的例子:

window.debug = function() {
    if (window.console && window.console.log) {
        window.console.log.apply( window.console, arguments );
    }
}
debug("JSON-parse error!");

让我们知道它是否有效。

我甚至想实现某种调试机制,但想先做一些测试。。。这似乎是推迟工作的结果。非常感谢,这解决了问题!
window.debug = function() {
    if (window.console && window.console.log) {
        window.console.log.apply( window.console, arguments );
    }
}
debug("JSON-parse error!");