我为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;
}
}
这个解决方案还不够,我看到它在短时间内断开后重新连接,但几个小时后它无法重新连接,连接结束。
请帮我找到解决方案
答案 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
试过他们,他们工作