Ionic Socket.io构建于android上,提供Transport Pollings问题

时间:2015-06-18 20:45:43

标签: android ios sockets socket.io ionic

我正在使用Socket.io在Ionic上构建游戏,以便在客户端之间进行通信。我尝试连接到在本地主机上运行的Express服务器以及Digital Ocean上的同一个服务器:

var express   = require('express');
var app       = express();
var socketio  = require('socket.io');

var server    = app.listen(8080);
var io        = require('socket.io').listen(server);

io.sockets.on('connect', function(socket) {
});

使用离子服务非常棒,当我在iOS上模拟时,当我在Android上运行或模拟它无法连接时,会给我以下错误:

Failed to load resource: the server responded with a status of 404 (Not Found) http:// my server /socket.io/?EIO=3&transport=polling&t=1434658858975-0
Failed to load resource: the server responded with a status of 404 (Not Found) http:// my server /socket.io/?EIO=3&transport=polling&t=1434658860600-1
Failed to load resource: the server responded with a status of 404 (Not Found) http:// my server /socket.io/?EIO=3&transport=polling&t=1434658862535-2

我通过工厂连接

.factory('socket', function($rootScope) {
  var socket = io.connect( server );
  return {
    on: function (eventName, callback) {
      socket.on(eventName, function () {  
        var args = arguments;
        $rootScope.$apply(function () {
          callback.apply(socket, args);
        });
      });
    },
    emit: function (eventName, data, callback) {
      socket.emit(eventName, data, function () {
        var args = arguments;
        $rootScope.$apply(function () {
          if (callback) {
            callback.apply(socket, args);
          }
        });
      })
    }
  };
});

我对此完全空白。是否有某个设置,如果更改,将允许我连接?

2 个答案:

答案 0 :(得分:0)

您可以尝试在MeteorJS中构建,这是一个基于Node / Express的应用程序框架,它使用socket.io它有一个非常好的Ionic包(完全支持)和Cordova支持内置的OAuth。我已经构建了一些移动应用程序并且它是一个很好的堆栈。在continental.com上查看MeteorJS.com和软件包

答案 1 :(得分:0)

不知道你是否还在寻找,但我可能遇到过这个问题的解决方案。

我遇到了完全相同的问题,即应用程序可以在iOS上正常运行,但不能在Android上运行。我能够通过不听localhost来使它工作,但是我的电脑的ip指向同一个端口。

插座工厂内部,我一直在使用 var socket = io.connect('http://localhost:3000')

相反尝试 var socket = io.connect('http://192.168.12.3:3000')。 或者你的计算机的IP地址是什么。