8个版本
0.10.5 | 2024年4月28日 |
---|---|
0.10.4 | 2024年3月22日 |
0.10.0 | 2024年2月26日 |
0.9.6 | 2024年2月25日 |
#1836 in Web编程
每月 47 次下载
72KB
1.5K SLoC
扩音器 📣
扩音器是一个反向代理,允许客户端使用长时间运行请求和服务器流式连接到服务器。它很有用,因为它从服务器抽象出处理长时间运行请求和服务器流式的复杂性,使服务器能够专注于业务逻辑。它还为客户提供了一个单一的连接端点,使得管理连接更容易,并减少了打开的连接和总体的流量开销。
它的工作原理
创建一个通道
要创建一个通道,必须调用 [POST] /create
端点。每个通道
- 都有一个100条消息的缓冲区,如果消费者当前未连接,则用于保持消息挂起。如果缓冲区已满,服务器将保留可能的写入操作10秒钟,之后将响应一个
503 服务不可用
状态码。 - 在最后读取操作后1分钟内(如果没有读取操作则为创建)保持活跃。之后它将自动删除,所有缓冲的消息都将丢失。
- 有两个地址,分别是
producerAddress
和consumerAddress
,第一个地址可用于向通道写入,第二个地址可用于从中读取。
向通道写入
要向通道写入,客户端必须调用 [POST] /write/{producer-address}/{stream-id}
端点。如果消息成功写入通道,服务器将响应 201 已创建
状态码。
从通道读取
从通道读取所需的信息仅为创建通道时返回的 consumerAddress
。目前支持的唯一协议是 http 流,因此要从通道中读取,客户端必须调用 [GET] /read/{consumer-address}
端点。
支持的协议
Http 流
要使用 http 流访问通道,客户端必须调用 [GET] /read/{consumer-address}
端点。服务器将保持连接打开 20 秒,并发送到达的消息。
其他仓库
- Megaphone 客户端 rust 客户端,可用于订阅 megaphone 通道。
- Megaphone 客户端 JS Javascript/Typescript 客户端,可用于订阅 megaphone 通道。
- Megaphone Operator Megaphone kubernetes operator
- Megaphone Demo 使用 megaphone 通道实现聊天的演示应用程序。
依赖关系
~22–36MB
~667K SLoC