【问题标题】:Firebase Realtime REST onDisconnectFirebase 实时 REST onDisconnect
【发布时间】:2019-09-01 10:55:14
【问题描述】:

我们正在为我们的 Xamarin.Forms 应用构建一个存在系统,该应用使用 Firebase 作为其后端。

在开发初期,我们决定为实时数据库 REST API (https://github.com/step-up-labs/firebase-database-dotnet) 使用包装库,而不是为 IOS 和 Android 使用本机库。

到目前为止,它已经节省了大量时间,但现在我们在实现类似 onDisconnect 的系统时遇到了问题。

我一直在github上的Android和JS firebase库中挖掘,发现客户端库发送的具体动作参数如下图所示。他们似乎传递了常量“o”来表示 onDisconnect 推送。

private static final String REQUEST_ACTION_ONDISCONNECT_PUT = "o";

...

  @Override
  public void onDisconnectPut(List<String> path, Object data, RequestResultCallback onComplete) {
    this.hasOnDisconnects = true;
    if (canSendWrites()) {
      sendOnDisconnect(REQUEST_ACTION_ONDISCONNECT_PUT, path, data, onComplete);
    } else {
      onDisconnectRequestQueue.add(
          new OutstandingDisconnect(REQUEST_ACTION_ONDISCONNECT_PUT, path, data, onComplete));
    }
    doIdleCheck();
  }

有什么方法可以使用 Firebase 实时数据库 REST api 发送此操作参数?

感谢您的宝贵时间。 干杯

【问题讨论】:

  • 你可以处理而不是断开连接吗?将连接对象放入“Using”中会在您退出 using 时自动进行 dispose。
  • @jdweng 谢谢你的回答,但我认为你误解了我的问题。我指的是firebase.google.com/docs/reference/android/com/google/firebase/… 一个函数,它允许在客户端失去连接时安排数据库操作运行。示例:将用户在线状态更改为“离线”
  • 您提供的链接看起来像是在数据库服务上运行的方法。不是客户端。您的第一句话说“Xamarin.Forms 应用程序”是客户端而不是服务。

标签: c# firebase http firebase-realtime-database


【解决方案1】:

适用于 iOS、Android 和 Web 的原生 Firebase 实时数据库 SDK 使用持久的 Web Socket 来保持每个客户端和服务器之间的开放连接。服务器使用此 Web Socket 来检测客户端何时断开连接,并在发生这种情况时执行客户端可能附加的任何 onDisconnect 处理程序。

Firebase 实时数据库的 REST API 是无连接的,因为它使用常规 HTTP(S) 调用来处理客户端和服务器之间的流量。无法通过 REST API 附加 onDisconnect 处理程序。

【讨论】:

  • 感谢您的回答,弗兰克。嗯,我想我将不得不重新考虑我们的 firebase 集成或将第 3 方服务添加到组合中。是否有任何关于创建自己的 websocket 连接到实时数据库的文档?
  • 有线协议没有记录。如果您想使用 onDisconnect 处理程序,请考虑使用本机 SDK(通过 Xamarin/C# 包装器)。
猜你喜欢
  • 1970-01-01
  • 2020-11-27
  • 2014-08-04
  • 2016-11-04
  • 2021-02-25
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多