Android双插座连接问题

时间:2019-07-15 05:41:32

标签: java android sockets socket.io

我已经在单例类上实现了套接字连接。但是,每当我从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);
}

0 个答案:

没有答案