【问题标题】:Display smoothie charts plot from Google Cloud Function显示来自 Google Cloud Function 的冰沙图表
【发布时间】:2021-02-07 20:35:26
【问题描述】:

我正在尝试通过我的谷歌云功能在浏览器中显示一个简单的冰沙图表 (http://smoothiecharts.org/tutorial.html)。

云函数在 node.js 中,它基于一个 http 触发器。

我需要帮助来显示实际图表。不知道如何告诉云函数在浏览器中显示图表。

谢谢!

编辑:

身份验证在这里不是问题。我了解如何编写冰沙函数,但在 Node.js 函数中包含 HTML 代码时遇到了问题。

这两行:

<script type="text/javascript" src="smoothie.js"></script>
<canvas id="mycanvas" width="400" height="100"></canvas>

我不知道如何告诉云功能这些。

目标是让云函数返回一个带有图表的 HTML 页面。

【问题讨论】:

  • 您能否澄清一下您是要绘制调用 gcf 的结果(gcf 仅将数据返回到图形)还是通过调用 gcf 来显示图形(gcf 返回带有图形的 html )?
  • 我可以知道您为什么要使用 Cloud Functions 将图表显示到浏览器吗? Cloud Functions 默认需要身份验证(但可以更改),因此如果您直接从浏览器调用 HTTP URL,则会收到“403”错误,因为没有指定身份验证标头。如果是这种情况,那么您可以尝试其他无服务器替代方案。

标签: node.js google-cloud-platform google-cloud-functions


【解决方案1】:

云函数 HTTP 触发等待请求并提供响应。很明显,我知道。但是从那里,你需要什么?您想请求新数据并在响应中获取新数据。

要做到这一点,你可以从教程的#4示例开始,像这样自定义

var smoothie = new SmoothieChart();

// Data
var line1 = new TimeSeries();
var line2 = new TimeSeries();

// Add a random value to each line every second
setInterval(function() {
  line1.append(##CALL FUNCTION TO GET AND PARSE VALUES FOR LINE1##);
  line2.append(##CALL FUNCTION TO GET AND PARSE VALUES FOR LINE2##);
}, 1000);

// Add to SmoothieChart
smoothie.addTimeSeries(line1);
smoothie.addTimeSeries(line2);

smoothie.streamTo(document.getElementById("mycanvas"));

我不太了解你的数据,以及你通常用来从 JS 调用函数的框架。了解用户是否经过身份验证也很重要:云功能可以在私有模式下部署,在这种情况下,所有请求都需要经过身份验证和授权。

【讨论】:

  • 谢谢。我了解这部分,但是我将定义“我的画布”的 HTML 代码放在哪里?
  • 要托管静态代码,您可以放入 Google Cloud Storage 或 App Engine。您还可以拥有一个提供此静态代码的 Cloud Functions。
  • 同一个云功能可以服务html代码吗?
  • 我认为你可以,我看到人们这样做,我觉得这不是很干净。这就是为什么我不能推荐这个。 Cloud Functions 被设计为单一用途。在这里,您提供 HTML 和数据。我建议构建一个具有 2 个端点(HTML 和数据)的网络服务器,并将其部署在 App Engine 或 Cloud Run 上
猜你喜欢
  • 2019-08-07
  • 2020-08-15
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
相关资源
最近更新 更多