我已经在单例类上实现了套接字连接。但是,每当我从Android最近版中删除该应用程序时,在下次启动该应用程序时,套接字都会连接两次。因此,我从侦听器中获取了双重数据。
套接字重新连接设置为True。我可以看到,如果将套接字重新连接设置为False,则可以解决双重套接字连接问题。但是我必须将Socket reconnection设置为True。我不明白的是,为什么即使在终止应用程序后,为什么套接字也会自动重新连接!然后,当我再次打开插座时,插座又重新连接了。
private void setUpSocket() {
try {
IO.Options options = new IO.Options();
options.reconnection = true; // if set to False the problem is resolved
options.reconnectionAttempts = 0; // 0 = Integer MAX Value
options.reconnectionDelay = 2000;
options.reconnectionDelayMax = 3000;
options.timeout = 3000;
options.forceNew = true;
String socketUrl = Urls.CHAT_SERVER_URL + AppSession.getInstance().getData().accessToken.replace(" ", "%20") + "&deviceCategory=mobile";
mSocket = IO.socket(socketUrl.trim(), options);
L.e("SOCKET URL: " + socketUrl.trim());
connectToSocket();
setUpListener();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
private void connectToSocket() {
if (mSocket != null && !mSocket.connected()) {
mSocket.connect();
L.e("mSocket connect called");
}
}
private void setUpListener() {
mSocket.on("ping", onSocketPing);
mSocket.on("pong", onSocketPong);
mSocket.on("connect", onSocketConnect);
mSocket.on("disconnect", onSocketDisconnect);
mSocket.on("close", onSocketClose);
mSocket.on("reconnect", onSocketReconnect);
mSocket.on("reconnect_attempt", onSocketReconnectAttempt);
mSocket.on("reconnecting", onSocketReconnecting);
mSocket.on("reconnect_error", onSocketReconnectError);
mSocket.on("reconnect_failed", onSocketReconnectFailed);
mSocket.on("incomingMessage", onSentMSGDelivered);
}