【发布时间】:2016-08-15 01:10:15
【问题描述】:
我在 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"。
【问题讨论】:
-
我也有同样的问题。关注
-
关于这个问题的主要问题是,在android中,当应用程序被杀死或从任务中删除时没有回调功能,因为套接字没有正确关闭。最好的方法是在 onPause() 回调中关闭套接字(mSocket.disconnect()),但这仍然取决于您何时关闭打开的套接字。