android上的Socket.io客户端在5分钟后断开连接

android上的Socket.io客户端在5分钟后断开连接,android,node.js,sockets,singleton,socket.io-java-client,Android,Node.js,Sockets,Singleton,Socket.io Java Client,我已经在android上实现了Socket.io客户端,我已经成功地在一个无限服务中初始化了Socket,但问题是当应用程序在后台并且手机被锁定时,它在5分钟后被断开。如果应用程序位于前台,则连接将保持活动状态 断开连接的情况: 服务仍在运行 由于未知原因,插座已断开 套接字实例是在Singelton类中创建的,并且实例保持不变 在生命周期中,我总是检查套接字实例的hashcode 我也实施了乒乓球解决方案,但它不起作用 检查服务器日志,发现用户的套接字已断开连接 我甚至尝试重新启动服务,但在重

我已经在android上实现了Socket.io客户端,我已经成功地在一个无限服务中初始化了Socket,但问题是当应用程序在后台并且手机被锁定时,它在5分钟后被断开。如果应用程序位于前台,则连接将保持活动状态

断开连接的情况:

  • 服务仍在运行
  • 由于未知原因,插座已断开
  • 套接字实例是在Singelton类中创建的,并且实例保持不变 在生命周期中,我总是检查套接字实例的hashcode
  • 我也实施了乒乓球解决方案,但它不起作用
  • 检查服务器日志,发现用户的套接字已断开连接
  • 我甚至尝试重新启动服务,但在重新启动后没有连接
  • 再次连接套接字以终止应用程序并重新启动应用程序的唯一方法
  • MySingelton.java

    public类Singelton实现可序列化{
    私有静态Singelton实例;
    私有静态最终字符串服务器\u ADDRESS=“xyz”;
    专用插座;
    私人语境;
    公共歌手(背景){
    this.context=上下文;
    this.mSocket=getServerSocket();
    }
    公共静态Singleton get(上下文){
    if(实例==null){
    instance=getSync(上下文);
    }
    instance.context=context;
    返回实例;
    }
    私有静态同步Singleton getSync(上下文){
    if(实例==null){
    实例=新的Singleton(上下文);
    }
    返回实例;
    }
    公共套接字getSocket(){
    返回此.mSocket;
    }
    公共套接字getServerSocket(){
    试一试{
    IO.Options opts=新IO.Options();
    opts.forceNew=true;
    opts.reconnection=true;
    mSocket=IO.socket(服务器地址,opts);
    返回mSocket;
    }捕获(URISyntaxException e){
    抛出新的运行时异常(e);
    }
    }
    
    }
    我不会建议您为此实施远程服务。我认为这应该是为创建套接字实例而设计的singleton类的问题。要在后台运行socket,请看这个,它可能对您有帮助。Hi@Sam我一定会尝试您的解决方案。希望它能起作用…@Sam解决方案不起作用。你能解决这个问题吗?不,我只是在解决这个问题,在服务类中创建套接字对象。。。。