开始使用 PubNub BLOCKS
介绍
无服务器架构现在是一种流行趋势。
当想到无服务器计算时,可能会想到Amazon AWS Lambda或Windows Azure Functions等名称,但还有许多其他公司也专注于这种模式。 以PubNub为例。
PubNub 允许您通过提供发布/订阅消息、在线状态检测和移动推送通知等功能的API 来构建实时应用程序。
使用 PubNub,您可以将消息(数据)发布到频道,以便订阅该频道的应用程序或设备实时接收消息:
这很有效,而且很多时候,这正是您的实时应用程序所需要的。
但是,如果我们需要在发送消息之前或之后对其进行处理,该怎么办?我们必须添加一个服务器来负责该处理。结果将如下所示:
对于需要服务器的应用程序来说,这可能不是问题。但是,如果有人能完全处理服务器管理和扩展等问题,那不是很好吗?
这就是PubNub BLOCKS发挥作用的地方。
使用 BLOCKS 发送数据
使用 BLOCKS(大写,指 PubNub 功能),您可以设置一段代码(事件处理程序)来在消息发布之前或之后处理消息,而不是简单地传递消息:
此块在 PubNub 网络中部署为无服务器函数或微服务。您只需使用 JavaScript 创建它并进行部署,PubNub 将处理其余工作。
以下是你可以使用块来做的事情:
- 通过添加新属性或者修改或删除现有属性来更改消息。
- 调用网络服务。
- 在键值存储中存储和检索数据。
- 在 BLOCKS 之间链接和转发消息。
甚至还有一个预构建块目录,允许您集成外部 API 的功能,例如通知、地理编码、机器学习等等。
让我们通过两个示例来了解 BLOCKS 的概念和功能。作为一个简单的示例,让我们创建一个块来反转字符串。之后,我们将构建一个更复杂的块,该块接受 URL 并调用 API 来生成二维码以返回其base64表示形式,将结果存储在数据库中以便仅在必要时调用 API。
让我们开始吧!
创建你的第一个区块
登录您的 PubNub 帐户,如果您没有帐户,请注册。
在您的信息中心中,创建一个新的应用程序并为其命名:
单击应用程序即可显示自动创建的密钥信息(如果需要,您可以创建另一个密钥集):
现在,您需要做的第一件事是在键集上启用 BLOCKS 功能。单击键集,向下滚动到应用程序附加组件,启用PubNub BLOCKS选项并保存更改:
接下来,在左侧菜单中选择 BLOCKS。将显示以下屏幕:
单击创建块,输入名称和描述(可选),选择启用块功能的键集,然后单击创建。您选择的名称对于给定键集下的所有块必须是唯一的。
结果如下:
事件处理程序
块充当事件处理程序 (EH) 的容器。事件处理程序包含将针对消息运行的 JavaScript 程序。
让我们创建一个。您有两个选项,手动创建 EH 或从一些预定义的模板创建。现在让我们选择后者。单击块行,然后单击“指导我”:
在出现的窗口中,您必须输入名称、类型以及将触发 EH 的消息发送到的频道:
支持三种类型的事件处理程序:
- 发布或触发之前。消息在以同步(阻塞)方式转发给频道订阅者之前,由 EH 代码进行处理。
- 发布或触发后。消息以异步(非阻塞)方式与针对消息运行的 EH 代码并行传递给订阅者。
- 存在后。触发存在事件时,同一存在事件的副本将提供给相关 EH 代码,以便以异步(非阻塞)方式进行处理。您可以在此处了解有关事件处理程序类型及其规则和限制的更多信息。
对于我们的示例,让我们选择“发布之前”或“触发”作为事件类型,选择渠道字符串,然后单击“保存并继续”:
接下来,根据所选的事件类型,将显示一些针对不同用例的代码示例:
选择Hello World示例并确认您的选择以开始编辑:
编写你的第一个块
我们先来分析一下Hello world示例的代码。
事件处理程序作为具有默认导出函数的 JavaScript 模块实现:
export default (request) => {
...
}
此函数接受一个具有消息属性作为其参数的请求对象,并且它必须返回请求对象或解析为请求对象值的承诺:
export default (request) => {
...
// Either of the following are valid return values:
// return request;
// return request.abort(); (returns a promise that resolves to the value of the request object, with an error code)
// return request.ok(); (returns a promise that resolves to the value of the request object)
return Promise.resolve(request);
}
使用 CommonJS 的require语法,您可以使用模块向您的程序添加功能:
export default (request) => {
var console = require('console');
...
}
目前支持以下模块:
- 高等数学。全局(纬度-经度)坐标和几何函数。
- Codec/auth.HTTP基本身份验证凭证的编码器。
- Codec/base64 . Base64 字符串的编码器和解码器。
- Codec/query_string.URI查询参数的编码器和解码器。
- 控制台. 相当于许多 Javascript 框架中的控制台对象。
- 加密。处理事件处理程序中消息的加密和解密操作的模块。
- KV 存储。处理与键/值存储交互的模块。键/值存储充当您的块的数据库。此数据库是全球分布的,并且最终是一致的。KV DB 中的数据在订阅者密钥级别共享。
- PubNub。PubNub 模块允许您利用 PubNub 数据流网络支持的其他一些本机客户端 SDK 功能。目前支持发布、时间和触发。
- Utils . 包含用于生成随机数和检查变量是否为数字的基本辅助方法的模块。
- <font style="vertical-align:
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~