有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javasocket。io连接不适用于多个片段

我正在用socket创建一个项目。伊奥。只要只有一个片段,它就工作得很好。然而,随着我在主活动中添加更多片段,它开始创建多个连接,我认为这不是一个好主意

起初,我连接到插座。io直接来自片段,但这是为每个片段创建一个连接。所以我在应用程序类中创建了一个连接,并在片段中使用它,从而立即解决了多个连接问题。但现在出现了一个新问题

在internet断开和重新连接的情况下,fragment不会从应用程序类重新建立连接。我已经试了一个多星期,但没有解决办法。奇怪的是,我在网上搜索了一下,但从来没有人问过这样的问题

下面是应用程序类中的连接代码

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);

如果互联网工作正常,这个设置可以完美地工作,在300毫秒内加载。然而,当我断开/重新连接互联网或我保持互联网断开,启动应用程序,然后连接到互联网。应用程序类中的连接连接速度很快,但由于某些原因,当前片段中的连接无法得到它

如果我切换片段,它就会再次开始监听来自应用程序类的连接

我是不是漏掉了什么?在重新连接的情况下,如何在不重新加载整个片段的情况下强制片段再次从应用程序类获取连接

非常感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    所以我创建了一个事件列表器来监听套接字连接状态并相应地显示ui。只需与event listner进行一次连接即可