javascript - Cordova Socket io xhr 轮询错误

标签 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 s​​erve 在我的浏览器中本地执行它时,它运行良好。 当我对任何服务器执行常规 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 在模拟器上测试它

最佳答案

在真实的设备甚至模拟器上使用localhost,总是指ip设备或模拟器本身。这也解释了为什么它在您的 浏览器 中使用 cordova s​​erve 工作。

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

关于javascript - Cordova Socket io xhr 轮询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41104002/

相关文章:

javascript - AngularJS REST 调用 - 属性 'name' 未定义

javascript - 如何在 Markdown 中使用 Github 按钮 (README.md)

javascript - 调整多个 Android 平板电脑屏幕的大小不起作用

javascript - 如何在AngularJS中的fullcalendar中动态设置多个事件?

javascript - window .open 在 ie8 中的页面加载时未打开

javascript - 如何将组件添加到 React 中的另一个组件?

javascript - 使用 'findOne' 或 'findAll' 后 Sequelize 不会更新

javascript - 修复不和谐音乐机器人队列

node.js - 在node.js中获取wpa_supplicant接口(interface)列表

javascript - Ajax 发布到远程 php 文件不适用于phonegap