【问题标题】:Emit data to all clients on a Google Web App向 Google Web App 上的所有客户端发送数据
【发布时间】:2021-01-10 22:57:58
【问题描述】:

我有一个绑定到 Google 表格的 Google Apps 脚本,并将其发布为 Web App。它仅限于某个 Google Workspace。该 Google 表格是一种用于该网络应用程序的临时数据库,并且会随着时间的推移而变化。一旦 Google 表格发生更改,我想将更新后的数据发送给所有客户。那可能吗?我不需要trigger for the edit,因为我知道在脚本中添加新数据时,所以现在是发送新数据的时候了。

基本上同样的问题可以表述如下:我们知道我们可以使用google.script.run从客户端执行服务器端功能,但也可以从服务器(即应用程序)执行客户端功能脚本?

我当前的解决方法是客户端 setInterval 每 30 秒左右检查一次服务器端更新(并使用 successHandler 获取它们)。它有效,但不是最佳的。

【问题讨论】:

  • 不可能从服务器执行客户端函数,除非它首先由客户端启动并通过回调进行响应。我认为投票是你唯一的选择。
  • 只要满足您的部署要求,您的客户端就可以访问 webapp 并自行获取数据。
  • 过去,您可以使用 GCM(Google 云消息传递)实现这一目标,但该服务已被弃用并移除,取而代之的是 FCM(Firebase 云消息传递)。 FCM 利用需要 Service Worker 的 Web Push API。不幸的是,GAS Web 应用程序目前不支持服务工作者。因此,就像@Cooper 所说的那样,您必须依靠“拉动”模型,在该模型中定期轮询数据库以进行更改。
  • 好的,谢谢。所以这个“轮询”是我在上一段中描述的解决方法。

标签: sockets google-apps-script google-apps


【解决方案1】:

只是为了将此标记为已回答。 Cooper 在 cmets 中写道:

“不可能从服务器执行客户端函数,除非它首先由客户端启动并通过回调进行响应。我认为轮询是你唯一的选择。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2023-04-01
    • 2022-11-15
    • 1970-01-01
    • 2021-10-05
    • 2013-02-01
    相关资源
    最近更新 更多