2016-12-12 8 views
1

apache cordovaアプリケーションでsocket.ioサーバーとsocket.ioクライアント間の接続に問題があります。それはnode.jsで動作するサーバには接続しません。Cordovaソケットio xhrポーリングエラー

次のように私の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); 

マイコルドバ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); 
     }); 
    }); 
} 

私はサーブコルドバと私のブラウザでローカルで実行すると、それが実行されます良い。 また、任意のサーバーに対して通常の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" 

私の問題とどのように私はさらにそれをデバッグすることができ何ができますか?

編集:私は、本当のdevice上あるいはemulatorに使用cordova emulate android

+0

実際のデバイスからテストしていますか? – Beat

+0

@Beatが編集されました。エミュレータでテスト中です – taivo

答えて

2

localhostとエミュレータ上でそれをテストし、常にデバイスまたはエミュレーター自体のipを指しています。これはあなたのbrowsercordova serveと働いている理由についても説明しています。

localhostを使用する代わりに、コンピュータのローカルIPを使用する必要があります。たとえば、windowsコマンドプロンプト(cmd.exeなど)からipconfigを使用して取得できます。

関連する問題