2017-07-30 4 views
0

からのNode.jsで をコールバック関数を渡すために、サーバー側で行わ何IVE方法:..私はNode.jsのサーバーにAndroidのクライアントにソケットからデータを送信したいアンドロイドクライアント

 socket.on('new user',function(data,callback){ 
     console.log('ON new user'); 

     if(data in users){ 
     callback(false); 
     }else { 
     callback(true); 
     socket.nickname = data; 
     users[socket.nickname]= socket; 
      UpdateNickNames(); 
    } 
}); 

と上私のクライアントアンドロイド:

  import io.socket.client.IO; 
     import io.socket.client.Socket; 
     import io.socket.emitter.Emitter; 

public class MainActivity extends AppCompatActivity { 
    private static final String TAG = "MainActivity"; 
EditText edt; 
Button btn; 
boolean msg; 
private Socket mSocket; 
{ 
    try { 
     mSocket = IO.socket("http://192.168.1.101/"); 
     Log.v(TAG,"fine"); 
    } catch (URISyntaxException e) { 
     Log.v(TAG,"Error..... "+e.getMessage()); 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mSocket.connect(); 
    edt=(EditText)findViewById(R.id.editText); 
    btn=(Button)findViewById(R.id.button); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      attemptSend(); 
     } 
    }); 
} 
private void attemptSend() { 
    String message = edt.getText().toString().trim(); 
    if (TextUtils.isEmpty(message)) { 
     return; 
    } 


    mSocket.emit("new user", message, true); 
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); 
} 

しかし、エラーでクラッシュします: throw er; //処理されていない 'error'イベント^ TypeError:コールバックが関数ではありません

答えて

0

私はあなたのサーバー側のコードがよく見えると思います。問題はクライアントサイドにあります。「新規ユーザー」イベントを発行するときは、パラメータとして渡す関数を確認して、ブール値(true)を渡してください。試してみてください。

mSocket.emit( "新しいユーザー"、メッセージ、コールバック);また

、コールバックの結果に基づいて、あなたが何か他のもの、あなたが何かを行う操作を行い、サーバー側から取得..このことができます

HOPE!

+0

なるほど... Uはこのような何か意味: ます。public voidコールバック(ブールX) { ブールyと、 y = x; (Y == blablabla)場合 } {//コードをここ 行く}他{ //コードをここ 行きます} – AbdoHurbli

0

私はここで解決策を見つけた:

  mSocket.emit("new user", message, new Ack() { 
      @Override 
      public void call(Object... args) { 
       //Code goes here 
      } 
    }); 

} 
関連する問題