保持firebase连接

时间:2017-03-07 14:02:40

标签: android firebase firebase-realtime-database connection keep-alive

我为Android操作系统构建了一个聊天,我希望一直连接到firebase。我的建议是实现一个后台服务来检测与firebase的断开连接并在断开连接后重新连接。 我的服务代码:

public class FirebaseConnection extends Service {

DatabaseReference connectedRef;

  @Override
  public void onCreate() {

  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {

  connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected"); 
  connectedRef.addValueEventListener(new ValueEventListener() { 
  @Override 
  public void onDataChange(DataSnapshot snapshot) { 
  boolean connected = snapshot.getValue(Boolean.class); 
  if (connected) { 
  System.out.println("connected"); 
  } else { 
  connectedRef.goOnline(); 
  System.out.println("not connected"); 
  } 
  } 

 @Override 
 public void onCancelled(DatabaseError error) { 
 System.err.println("Listener was cancelled"); 
 } 
 });

   return START_STICKY;
 }
 @Override
  public IBinder onBind(Intent intent) {
   return mBinder;
  }
  }

这个解决方案还不够,我看到它在短时间内断开后重新连接,但几个小时后它无法重新连接,连接结束。

请帮我找到解决方案

2 个答案:

答案 0 :(得分:1)

Firebase SDK将始终尝试维护与Firebase实时数据库实例的开放连接。如果连接断开,它将自动尝试重新连接。

无需对该连接进行任何维护。它是为你处理的。

答案 1 :(得分:0)

您正在寻找xmpp服务器实现;

我强烈建议你研究这些;

用于服务器实现 https://github.com/sreejesh79/android-socket.io-server-demo

用于客户端实现 https://github.com/sreejesh79/android-socket.io-client-demo

试过他们,他们工作