Socket.IO Cordova 无法在设备上运行

Socket.IO with Cordova not working on Device

我目前正在使用 Ionic Framework 开发一个 Apache Cordova 应用程序,它应该通过 WebSocket 进行通信,我为此使用了 Socket.Io 库。现在,当我 运行 它在我的桌面浏览器上时一切正常,但是当我为 Android 构建并在我的智能手机上测试它时它不起作用。

我的服务器是这样的:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(8200, '192.168.0.127', function() {
  console.log('Server listening...');
});

io.listen(server);

io.on('connection', function(socket) {
  socket.emit('init', data);
});

而且由于 Ionic 是 AngularJS 的朋友,我的客户端控制器看起来像这样:

.controller('AppCtrl', function($rootScope, $scope, ServerUrl) {

  var socket = io.connect(ServerUrl.serverUrl()); // ServerUrl: 'http://192.168.0.127:8200'

  socket.on('init', function(data) {
    // something
  });

我将 Socket.IO 客户端脚本包含在我的 index.html 头中,如下所示:

<script src="lib/socket.io/socket.io.min.js"></script>

当我远程调试应用程序时,它使用不同的 t 参数重复抛出此消息:

Failed to load resource: net::ERR_ADDRESS_UNREACHABLE     http://192.168.0.127:8200/socket.io/?EIO=3&transport=polling&t=1431079993172-0

我已经彻底搜索了这里的每个相关问题,但它们并没有解决我的问题。我真的需要这个东西来工作,如果有任何帮助,我将不胜感激。

提前致谢。

这是一个 IP 地址问题。 192.168.0.127 是我桌面的 WiFi IP,但不知何故每次我将智能手机连接到桌面以部署应用程序时,都会构建 LAN 网络并且 WiFi 适配器已断开连接,因此 192.168.0.127:8200 无法访问。在 Windows 控制面板中停用 LAN 网络,一切正常。