Cordova Socket io xhr轮询错误

我无法在apache cordova应用程序中的socket.io服务器和socket.io客户端之间build立连接。 它只是不会连接到我在node.js中运行的服务器。

我的socket.io服务器代码如下:

var server = require('http').createServer(); var io = require('socket.io')(server); io.on('connection', function(socket) { console.log('socket connected'); socket.on('disconnect', function () { console.log('socket disconnected'); }); socket.emit('text', 'wow. such event. very real time.'); }); server.listen(3000); 

我的cordova js代码如下:

 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { console.log("Hello from app 1234"); var socket = io('http://localhost:3000', {reconnect: true}); console.log("socket created"); socket.on('connect', function() { console.log("Connection created!"); alert("connection ok"); socket.on('text', function(text) { alert(text); }); }); } 

当我在我的浏览器与cordova服务本地执行它,它运行良好。 当我正在对任何服务器进行常规的XMLHttpRequest()时,它也很好,我testing了它,并能够接收JSON就好了。

错误:

 "socket.io-client:manager connect_error +49ms" "engine.io-client:socket socket error %j +50ms",Error: xhr poll error "socket.io-client:manager connect attempt will timeout after %d +113ms",20000 "engine.io-client:polling-xhr xhr poll +5s" "engine.io-client:polling-xhr xhr data %s +1ms",null "engine.io-client:socket setting transport %s +110ms","polling" "engine.io-client:polling-xhr xhr open %s: %s +28ms","GET","http://localhost:3000/socket.io/?EIO=2&transport=polling&t=1481551911376-8" 

可能是我的问题,我怎么能进一步debugging呢?

编辑:我正在模拟器与cordova emulate androidtesting它

在真实的device ,甚至在emulator上使用localhost ,总是指设备或仿真器本身的ip 。 这也解释了,为什么它是在你的browsercordova serve

而不是使用localhost你必须使用你的计算机的本地IP地址。 你可以通过使用ipconfig从windows命令promt(例如cmd.exe )获取它。