#protocols #signal-r #server #client #streaming

signalrs-client-custom-auth

SignalR客户端的Rust实现

6个版本

0.1.7 2024年6月7日
0.1.6 2024年6月6日

#125 in #streaming

MIT许可证

82KB
1.5K SLoC

Docs.rs crates.io

SignalRs

SignalRs是Rust对SignalR协议的实现。

SignalR是一个开源协议,它简化了将实时Web功能添加到应用程序中。实时Web功能允许服务器端代码即时向客户端推送内容。

这个库是这个协议客户端的Rust开源实现。最初在Microsoft的.NET生态系统中开发。更多关于它的信息可以在官方文档中找到。

从技术角度来看,它是一个具有双向流能力的RPC框架。

查看相应的crates的docs.rs或examples文件夹,了解如何使用它。

为什么选择SignalR

人体工程学

它允许使用人体工程学编程模型进行双向通信。在需要实时通信的情况下,它提供了一个易于使用的框架,抽象了底层的传输层。正确实现WebSockets并不是一件容易的事情。

与现有服务的集成

由于SignalR起源于.NET生态系统,有些服务提供了SignalR端点。这个库允许与它们轻松集成。这可能尤其适用于主要使用C#的公司内部工具。说实话,这也是这个库最初被创建的原因。

功能 🚀

这个库功能并不全面,还没有经过实战检验。目前适用于内部工具和个人项目。

如果您偶然发现了一个错误或缺失的功能 - 请提交问题。

客户端

客户端目前支持

  • 调用服务器,带有值和流参数
  • 发送消息,
    • 不等待响应
    • 等待单个响应
    • 等待响应流
  • 拥有支持
    • 值参数的客户端端点
  • WebSockets
  • JSON

客户端不支持(目前)

  • 流参数到客户端端点
  • 长轮询
  • 服务器发送事件
  • MsgPack

要查看客户端的源代码,请查看此仓库中的signalrs-clientcrate。

服务器

服务器仍在开发中。它已经相当高级并且可以运行,但尚未发布。要查看其源代码,请查看此仓库中的signalrs-nextcrate。

测试

  • 使用
    • .NET客户端实现进行跨平台测试

参考

协议的内部实现基于以下内容

依赖关系

~15–29MB
~561K SLoC