2017-06-02 8 views
0

私はNodeJS、Socket.IO、Expressで開発されたサーバーを持っています。私はそのサーバーに対処するためのウェブサイトを開発し、すべて正常に動作します。問題はアンドロイドアプリケーションを開発しようとしたときに起こります。Socket.Ioリスナーでループを取得する

私はsocket.ioにオブジェクトの配列を返すメソッドを持っています。コードでは次のようになります:

socket.on("getData",function(data){ 
if(data!=null){ 
io.sockets.connected.emit("getSocData", {result:true}); 
} 
} 

クライアントでは、どこでうまく動作していますか。私は私の携帯電話とそのAndroidのコードをデバッグするとき

mSocket.on("getSocData", new Emitter.Listener() { 
    @Override 
    public void call(final Object.. args) { 
     getActivity().runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       JSONObject data = (JSONObject) args[0]; 
      } 
     }); 
    } 
}); 

、runメソッドに20回以上ループし始めるが、私はコードがAndroidアプリをデバッグするとき

socket.on("getSocData", function (data) { 
if(data){alert("good"); } 
} 

トラブルが来ますmSocket.onは1回だけトリガします。

ウェブサイトは正常に動作していますが、Androidでは実行方法が終了するまでアプリがフリーズするため、狂っています。私が使用

dependecyは次のとおりです。

compile ('io.socket:socket.io-client:0.8.3') { 
    exclude group: 'org.json', module: 'json' 
} 

Thxを4すべてのみんな!

答えて

1
あなたのソケット呼び出し off()方法だから明らか取り付けられているすべてのイベントのために、設定されたイベントリスナーの前

:魔法のように

mSocket.off() 
mSocket.on("getSocData", new Emitter.Listener() { 
    @Override 
    public void call(final Object.. args) { 
     getActivity().runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       JSONObject data = (JSONObject) args[0]; 
      } 
     }); 
    } 
}); 
+0

作品!!私はアンドロイドとウェブサイトのクライアントが類似していると思った。 – kartGIS

関連する問題