用户杀死应用程序后Socket.io android socket.on无效

时间:2016-04-21 17:09:03

标签: android socket.io

我在onCreate中有socket.on,它起初工作正常。 但是,当我杀了应用程序,重新打开应用程序和服务器接收来自其他人的消息,但android socket.on无法正常工作。 但发射功能仍然有效。 有什么建议吗?

以下是大致的代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try {
        mSocket = IO.socket("http://192.0.0.1/");
        mSocket.connect();
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    }

    mSocket.on("chat message", onNewMessage);  // not working after kill the app and reopen.

}

private Emitter.Listener onNewMessage = new Emitter.Listener() {
    @Override
    public void call(final Object... args) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                JSONObject data = (JSONObject) args[0];
                String message;
                try {
                    message = data.getString("message");
                    Log.d("message", message );
                } catch (JSONException e) {
                    return;
                }
        });
    }
};
@Override
    public void onDestroy() {
        super.onDestroy();

        mSocket.disconnect();
        mSocket.off("chat message", onNewMessage);
}

Android客户端Socket.io版本是socket.io-client:0.7.0。 服务器是Node.js和" socket.io":" ^ 1.4.5"。

1 个答案:

答案 0 :(得分:0)

我找出问题所在。 当我们终止应用程序并重新启动时,套接字将立即杀死套接字并创建一个新套接字。所以我们必须向服务器发出一个新事件才能加入原来的房间。它现在工作正常。