如何使 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。
当我第一次使用 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。