Cordova Socket io xhr民意调查错误

时间:2016-12-12 15:20:05

标签: javascript node.js cordova sockets socket.io

我在apache cordova应用程序中在socket.io服务器和socket.io客户端之间建立连接时遇到问题。它只是不会连接到我在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()时,它也很好,我测试了它并且能够接收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"

可能是我的问题,如何进一步调试?

编辑:我正在使用cordova emulate android

在模拟器上测试它

1 个答案:

答案 0 :(得分:2)

在真实localhost甚至device上使用emulator,始终引用设备或模拟器本身的ip。这也解释了为什么它在您的browser cordova serve。{/ p>

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