#微服务 #RPC #发布/订阅 #WAMP #Web 应用 #WAMP2

bin+lib wampire

异步 WAMPv2 客户端和路由器,实现了基本 WAMP 规范

5 个版本

0.2.1 2022 年 6 月 1 日
0.2.0 2022 年 5 月 30 日
0.1.2 2018 年 7 月 10 日
0.1.1 2018 年 5 月 31 日
0.1.0 2018 年 5 月 26 日

15Web 编程 中排名

Download history 38/week @ 2024-03-29 9/week @ 2024-04-05 7/week @ 2024-04-12 32/week @ 2024-04-19 12/week @ 2024-04-26 14/week @ 2024-05-03 6/week @ 2024-05-17 3/week @ 2024-05-24 53/week @ 2024-05-31 41/week @ 2024-06-07 3/week @ 2024-06-14 34/week @ 2024-06-21 83/week @ 2024-06-28 17/week @ 2024-07-05 305/week @ 2024-07-12

每月 439 次下载
ux-webmachine 中使用

MIT 许可证

195KB
4.5K SLoC

异步 Web 应用消息协议 (v2)

API Docs Crates.io Code coverage Tests MPL-2.0 licensed Gitter chat loc

Wampire 是一个异步的 Web 应用消息协议 v2 路由库、客户端库以及路由服务,实现了高级规范中的大多数功能。Wampire 项目是用 Rust 编写的,旨在进行高度并发的异步 I/O。Wampire 路由器提供扩展功能。路由器和客户端与其它 WAMP 实现进行交互。项目最初是从 wamp-rs v0.1.0 分支出来的。

WAMP 应用场景

WAMP 比较

好吧。那么 WAMP 相比其他技术如何呢?

我们真的需要另一个轮子吗?是的。请阅读以下内容,了解我们为什么这样认为。

以下表格根据 六个标准 对 WAMP 与其他技术进行比较

  1. 发布/订阅 是否支持开箱即用的发布和订阅?

  2. RPC 是否支持开箱即用的远程过程调用?

  3. 路由 RPC 是否支持 路由 (不仅点对点) 远程过程调用?

  4. Web 原生 是否原生运行在 Web 上(无需隧道或桥接)?

  5. 跨语言 是否支持不同编程语言和运行时?

  6. 开放标准 是否有不同供应商实现的开放、官方规范?

另请参阅:物联网的 Web 技术 - 一篇包含 WAMP、MQTT、CoAP、REST、SOAP、STOMP 和 MBWS 在物联网应用中比较的硕士论文。

技术 发布/订阅 RPC 路由 RPC Web 原生 跨语言 开放标准
WAMP
AJAX - - -
AMQP (✔) - -
Apache Thrift - - - -
Capn’n’Proto - - - -
Comet - - - -
OMG DDS - - -
D-Bus -
CORBA - -
DCOM - - -
Java JMS - - - -
Java RMI - - - -
JSON-RPC - -
MQTT - - -
OPC-UA (✔) - (✔)
REST - - -
SOAP - -
socket.io - - - -
SockJS - - - -
STOMP - -
XML-RPC - -
XMPP - -
ZMQ - - - -

实现

为不同的语言提供了许多实现。 了解更多..

常见问题

了解更多..

完整文档

请参阅Wampire 项目Wiki以获取完整文档、示例和操作细节。

目前支持整个基本配置文件,以及高级配置文件中的基于模式的订阅和注册。

你可能正在寻找

目前不支持安全连接。

要将 Wampire 包含到你的项目中,请将以下内容放置在你的 Cargo.toml 文件中

[dependencies]
wampire = "0.2"

Wampire 使用 serde-rs,它需要 Rust 1.15 或更高版本。

路由器

要启动开发模式下的路由器,请使用

RUST_LOG=info cargo run wampire

Nginx 配置

要将 WebSocket 连接传递给路由器,请将其添加到 Nginx 配置中。PS. 也可以使用 SSL。

location /ws/ {
    proxy_pass http://127.0.0.1:8090;
    
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_read_timeout 1800s;

    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Systemd

构建路由器

  1. 使用以下命令克隆存储库:git clone https://github.com/ohyo-io/wampire.git
  2. cdwampire && cargobuild
  3. wampiretarget 文件夹复制到 /usr/local/bin
  4. wampire.servicedist 复制到 /usr/lib/systemd/system/lib/systemd/system(取决于您的系统)。

要启动服务

systemctl start wampire

要将其设置为系统服务

systemctl enable wampire

示例

请参阅示例目录。有关检查示例的说明

RUST_LOG=info cargo run --example api_user
RUST_LOG=info cargo run --example endpoint
RUST_LOG=info cargo run --example pubsubclient

高级配置文件功能支持

请参阅FEATURES以获取详细信息。

扩展功能

Wampire 提供了关于订阅者黑白名单和在会话元 API 中可用的信息的扩展功能extended functionality
这增强了客户端对消息接收者的决策能力。

支持 Wampire

Wampire 是一个 MIT 许可的开源项目。这是一个独立项目,其持续发展完全得益于这些出色的赞助商的支持。如果您想加入他们,请考虑

Become a patron ko-fi

许可

本作品根据 MIT 许可证授权。有关详细信息,请参阅LICENSE

依赖项

~8–19MB
~279K SLoC