socket.io客户端“emit”在Chrome控制台中显示奇怪的错误

我正在开发一个简单的应用程序,使用当前最新版本的nodejs + socket.io在Windows上。 我在客户端创build套接字时遇到了一个问题,但是socket.emit会在控制台中导致以下输出(使用Google Chrome):

GET http://0.0.34.184:8888/socket.io/1/?t=1321385855665&jsonp=0 

这是非常奇怪的,因为我正在testinglocalhost:8888所以它应该至less127.0.0.1而不是0.0.34.184。 该页面上的socket.io客户端从标签中的服务器请求如下:

 <script type="text/javascript" src="socket.io/socket.io.js"></script> 

然后我使用下面的代码连接:

 socket = io.connect('localhost:8888'); socket.on("my_event", receiveNetEvent); console.log('LOG: sio init complete, socket=' + socket); 

日志指出socket = [Object object]不是null或undefined,所以一切都应该工作。

发送itseld在以下函数中执行:

 function sendRequest(request){ socket.emit('request', request); } 

传递给函数的请求对象是这样形成和传递的:

 var initRequest = {}; initRequest.subject = 'weather'; initRequest.key = 'initial'; sendRequest(initRequest); 

再次,根据console.log() ,它是一个有效的json对象。

所有这一切使我对发生的任何可能的原因完全无能为力。

尝试添加http://到连接path。 这为我解决了这个错误。

 socket = io.connect('http://localhost:8888'); 

我面临同样的问题,但我有一个不同的原因。 我的设置是在端口9000的tomcat服务器上运行套接字客户端,并连接到localhost:80正在运行nodejs,我没有意识到端口是强制性的,即使它默认是80。

所以我给了港口,并取而代之

io.connect('http:// localhost')与io.connect('http:// localhost:80')

因为我的服务器都指向同一个域,在这种情况下,本地主机…由于某种原因,socket io端口9000

希望它有助于某人。

我也面临着同样的问题,但通过迫使xhr-polling到服务器端JavaScript解决了这个问题。

  var io = require('socket.io').listen(8000); io.configure(function () { io.set('transports', ['xhr-polling']); }); <..Rest code..>