signalrs-derive

Crates.iosignalrs-derive
lib.rssignalrs-derive
version0.1.0
sourcesrc
created_at2022-11-14 18:26:16.233688
updated_at2022-11-14 18:26:16.233688
descriptionDerive macros for SignalR client for Rust
homepage
repositoryhttps://github.com/szarykott/signalrs
max_upload_size
id715129
size4,495
Radosław Kot (szarykott)

documentation

README

SignalRs

SignalRs is Rust's implementation of SignalR protocol.

SignalR is an open-source protocol that simplifies adding real-time web functionality to apps. Real-time web functionality enables server-side code to push content to clients instantly.

This library is an open source implementation of this protocol's client in Rust. Originally developed at Microsoft in .NET ecosystem. Read more about it in offical documentation.

In technical terms it is a RPC framework with bidirectional streaming capabilities.

See docs.rs or examples folders of appropriate crates to see how to use it.

Why SignalR

Ergonomics

It allows bidirectional communication with ergonimic programming model. In cases where real-time communication is required it provides an easy to use framework, abstracting underlying transport layer. Getting WebSockets right is not an easy task.

Integration with existing services

Since SignalR originated in .NET ecosystem, there are services that expose SignalR endpoints. This library allows easy integration with them. This might be especially true for internal tooling at companies that do mostly C#. Truth to be told, it was a reason this library was created in the first place.

Features 🚀

Client

Client currently supports:

  • call servers with value and stream arguments
  • send a message and:
    • do not wait for a response
    • wait for a single response
    • wait for stream of responses
  • have a client-side hub that supports
    • value arguments
  • WebSockets
  • JSON

Client does not support (yet):

  • stream arguments to client-side hubs
  • LongPolling
  • ServerSentEvents
  • MsgPack

To view source code of the client see signalrs-client crate in this repository.

Server

Server is a work in progress. It is pretty much advanced and runs, but is not released yet. To view its source code see signalrs-next crate in this repository.

Testing

  • Cross-platform testing with:
    • .NET client implementation

References

Internals of the protocol were implemented based on following:

Commit count: 139

cargo fmt