如何从android客户端传递node.js中的回调函数

时间:2017-07-30 12:48:07

标签: javascript android socket.io

我想将数据从android客户端的socket发送到node.js服务器.. 我在服务器端做了什么:

         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();
}

并在我的客户端android:

RasterizePixelHeight

但是它出现了错误:  扔掉//未处理的错误' event ^ TypeError:回调不是函数

2 个答案:

答案 0 :(得分:0)

我相信您的服务器端代码看起来不错。问题在于客户端...当您发出“新用户”事件时,请确保它作为参数传递的函数,而不是传递布尔值(true)。试试这个,

mSocket.emit(“新用户”,消息,回调);

此外,根据您从serverSide获得的回调结果,您可以执行某些操作,否则您会执行其他操作。

希望这有助于此!

答案 1 :(得分:0)

我在这里找到了解决方案:

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

}