[英]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.