如何使 Firebase Java 事件 API return 事件类似于 SSE API?

How do I make the Firebase Java Event API return events like the SSE API?

当我第一次使用 Firebase 制作原型时,我使用 Python 和 SSEClient API 来流式传输更新事件。它按我的预期工作;如果我订阅了整个文档并且只更新了其中的 /v_42/lastUpdate,我会得到一个 SSE 事件,例如:

{ "event": "put", 
  "data" :{"path":"/v_42/lastUpdate","data":{"timestamp":9052758}}}

有没有办法使用 Java API 获取更新的特定路径?我能找到的最接近的是

firebase.addChildEventListener(new ChildEventListener() {
  public void onChildChanged(DataSnapshot snapshot, String previousChildKey) { ... }

...但是 snapshot.getKey() 仅 returns 顶级密钥(即 "v_42",而不是更改的整个路径。

您使用的是不同的 API,因此它公开的内容不同。但是相同的信息将在那里。

例如获取快照中数据的路径:

snapshot.getRef().toString().substring(snapshot.getRef().getRoot().toString().length())

另一方面,如果您想要 REST API 提供的信息,您也可以使用 Java 中的 REST API。