我不知道这是非常基本的问题。我正在尝试将Firebase添加到我的Web应用程序服务器端(JAVA),而不是Android项目。我的目标是将更新推送给客户,以便对特定实体进行一些更改。我使用appengine作为db。所以当实体更新时,我需要推送实时数据库,并且客户端(浏览器)侦听更新的节点。我正尝试从建立java连接开始。这下面的代码写道。连接到数据库,但几秒钟后它断开连接。如何检查每个服务器请求的Firebase连接?我如何重新连接?
- 我应该再次初始化应用程序?
- 此外,一旦它被连接到火力地堡,我一定要检查连接仍然是活动和推动火力地堡?是否需要为每个请求重复?
- 有没有更好的方法来写这个?
我非常感谢所有帮助。用Javascript成功实现,但与JAVA结束。提前致谢。
@SuppressWarnings(
{ "unchecked" , "rawtypes" })
public static void initiateFirebaseDB() throws FileNotFoundException
{
if (FirebaseApp.getApps().isEmpty())
{
AccessController.doPrivileged(new PrivilegedAction()
{
public Object run()
{
FileInputStream serviceAccount = null;
try
{
serviceAccount = new FileInputStream(/* path to the json file */ );
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl(/* db url */).build();
FirebaseApp.initializeApp(options);
return null;
}
});
}
DatabaseReference 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
{
System.out.println("not connected");
}
}
@Override
public void onCancelled(DatabaseError error)
{
System.err.println("Listener was cancelled");
}
});
}
您不需要监视连接。 Firebase会在短暂停机后自动重新连接,并同步您在离线时所做的任何更改。这是实时数据库魔法的关键元素。 – Kato
非常感谢你@Kato。我应该在哪里添加用于初始化Firebase应用程序的代码?我已经看到了firebase示例代码,它们已经包含在主函数中。我没有这样的方法。我的服务器只是更新实体值的端点。 –