簡體   English   中英

Socket.io連接不適用於多個片段

[英]Socket.io connection doesn't work for multiple fragments

我正在用socket.io創建一個項目。 只要只有一個片段,它就可以正常工作。 但是,隨着我在主要活動中添加更多片段,它開始創建多個連接,我認為這不是一個好主意。

最初,我直接從片段連接到socket.io,但這是為每個片段創建一個連接。 因此,我在Application類中創建了一個連接,並將其用於片段中,從而立即解決了多個連接問題。 但是現在出現了一個新問題。

如果Internet斷開連接並重新連接,則片段不會從Application類獲得重新建立的連接。 我已經嘗試了一個多星期,但沒有解決方案。 奇怪的是,我在互聯網和stackoverflow上進行搜索,但從未有人問過這樣的問題。

這是應用程序類中的連接代碼

synchronized public Socket getSocket() {
    if (mSocket == null) {
        try {
            IO.Options opts = new IO.Options();
            opts.reconnection = true;
            opts.reconnectionDelay = 1000;
            mSocket = IO.socket("http://ddbharti.in", opts);

            mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    Log.d(TAG, "EVENT_CONNECT");
                }

            }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    Log.d(TAG, "EVENT_DISCONNECT");
                }
            }).on(Socket.EVENT_ERROR, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    Log.d(TAG, "error");
                }
            });
            mSocket.connect();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    return mSocket;
}

這就是每個片段的連接方式

socket = application.getSocket();
socket.emit("tag", tag);

如果Internet正常運行,則此設置可以正常工作,加載時間為300毫秒。 但是,當我斷開/重新連接Internet或保持Internet斷開連接並啟動應用程序,然后連接到Internet時。 Application類中的Connection可以快速連接,但是由於某種原因,當前片段中的連接無法獲得連接。

如果我切換片段,則它將再次開始偵聽來自Application類的連接。

那我在這里想念什么嗎? 在重新連接的情況下,如果不重新加載整個片段,如何強制片段再次從應用程序類獲得連接?

任何幫助是極大的贊賞。

因此,我創建了一個事件列表器,以監聽套接字連接狀態並相應地顯示ui。 只需要一個與事件列表器的連接即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM