Flutter插件qstash_dart的使用_qstash 是一个基于HTTP的消息传递和调度解决方案,适用于无服务器和边缘运行时环境
Flutter插件qstash_dart的使用_qstash 是一个基于HTTP的消息传递和调度解决方案,适用于无服务器和边缘运行时环境
QStash 是一个基于HTTP的消息传递和调度解决方案,适用于无服务器和边缘运行时环境。
它完全基于无状态的HTTP请求,并且设计用于以下场景:
- 无服务器函数(AWS Lambda、Cloud Run、Cloud Functions 等)
- 客户端Web/移动应用
- WebAssembly
- 其他首选HTTP而非TCP的环境
SDK的状态
目前SDK处于测试阶段,我们正在积极收集社区反馈。如果您遇到任何问题或有功能需求,请在 GitHub问题页面 报告或在 Discord 上与我们联系。感谢您的支持!
QStash如何工作?
QStash 是您无服务器应用程序之间的消息代理。您向QStash发送一个包含目的地、负载和可选设置的HTTP请求。我们会持久化存储您的消息,并通过HTTP将其发送到目的地API。如果目的地暂时无法接收消息,我们将稍后重试该消息,以确保至少一次的交付。
Flutter插件qstash_dart快速开始
Flutter插件qstash_dart安装
dart pub add qstash_dart
获取授权令牌
访问 upstash 并复制令牌。
基本用法
发布消息
import 'package:qstash_dart/qstash_dart.dart';
void main() async {
final c = Client(
ClientConfig(
token: '<QSTASH_TOKEN>',
),
);
final res = await c.publishJSON(
PublishRequest(
destination: const Destination(
type: DestinationType.url,
url: 'https://rebaz-qstash.requestcatcher.com/test',
// 或者 topic: "主题名称或ID"
),
body: {
'hello': 'world',
},
),
);
print(res);
}
// 输出类似: PublishResponse{scheduleId: null, messageId: msg_xxxxxxxxxxxxxxxx}
接收消息
接收消息的方式取决于您的HTTP服务器。Receiver.verify
方法应该作为处理函数的第一步被调用。
import 'package:qstash_dart/qstash_dart.dart';
void main() async {
final receiver = Receiver(
currentSigningKey: "sig_55CLgfUo1cbmvP6kZ2Z3WU4fQ1A3",
nextSigningKey: "sig_7E7ZLVMTgAp7hMkz9qPRHXj44xnB",
);
// 验证签名
final isValid = await receiver.verify(
VerifyRequest(
body: 'string', // 请求原始正文
signature: 'string', // Upstash-Signature 头部中的签名
),
);
}
文档
详情请参阅 文档。
贡献
- 在 GitHub 上fork仓库
- 将项目克隆到本地机器
- 将更改提交到自己的分支
- 将工作推送到自己的fork
- 提交Pull Request以便我们审查并合并您的更改
许可证
该项目由MIT许可证保护。
致谢
示例代码
以下是使用 qstash_dart
插件的基本示例代码:
import 'package:qstash_dart/qstash_dart.dart';
void main() async {
final q = QstashClient.fromEnv();
final receiver = Receiver(
currentSigningKey: "sig_55CLgfUo1cbmvP6kZ2Z3WU4fQ1A3",
nextSigningKey: "sig_7E7ZLVMTgAp7hMkz9qPRHXj44xnB",
);
final res = await q.publish(
PublishRequest(
destination: const Destination(
type: DestinationType.url,
url: 'https://rebaz-qstash.requestcatcher.com/test',
),
body: 'Hello World',
),
);
print(res);
// 验证签名
final isValid = await receiver.verify(
VerifyRequest(
body: 'Hello World',
signature: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiIiLCJib2R5IjoicFpHbTFBdjBJRUJLQVJjeno3ZXhrTllzWmI4THphMX...', // 示例签名
url: 'https://rebaz-qstash.requestcatcher.com/test',
),
);
print(isValid);
}
更多关于Flutter插件qstash_dart的使用_qstash 是一个基于HTTP的消息传递和调度解决方案,适用于无服务器和边缘运行时环境的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复