我不知道這是非常基本的問題。我正在嘗試將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示例代碼,它們已經包含在主函數中。我沒有這樣的方法。我的服務器只是更新實體值的端點。 –