我正在使用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);
}
});
})
}
};
});
我对此完全空白。是否有某个设置,如果更改,将允许我连接?
答案 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地址是什么。