Skip to content

Rust MQTT library based on the OASIS MQTT Version 5.0 Standard with WASM support (WIP)

Notifications You must be signed in to change notification settings

tolumide-ng/hivemqtt

Repository files navigation

HiveMQTT

MQTT5.0

Some Guides (Incomplete)

  1. To generate the wasm build:
> cd hivemqtt-core
> wasm-pack build --target web --out-dir ./../pkg
- This should generate the `pkg` folder which you can use for your javascript/typescript projects at the root level of this project
  1. To generate asm output:
> cd hivemqtt-core
> cargo rustc --lib -- --emit asm
OR 
> cargo rustc --lib --release -- --emit asm #for prod
- you would find the `assembly output`inside `hivemqtt/target/debug/deps/hivemqtt_core.s` (if you ran the command above in debug mode, else it would be in the release folder(insteads of deps) if ran with release)

Plans

  • Protocol Support
    • MQTT 3.1.1
    • MQTT 5.0 (In Progress)
    • TLS/TCP
    • IPV6
  • All MQTT Packet Support (In Progress)
  • Implement Display for Property
  • Tests
  • no_std support
  • Integrate WASM for easy compiling to Javascript/Typescript/Node.js environments
  • Easy internal utility for converting -> to string and vice versal (from terminal tool?) - for debugging
  • Samples for easy learning
  • Move bytes length validation/parsing into the trait, and update the trait's secondary properties
  • Topic Filters: (4.7 Topic Names and Topic Filters)
  • Shared Subscription: (4.8.2 Shared Subscriptions)

Notes to users:

AsyncReadExt + AsyncWriteExt works fine with async-std, and smol runtime users. However users of tokio, would need to add tokio-util to ensure compatibility

tokio-util = { version = "0.7.13", features= ["compat"]}
let stream = TcpStream::connect("example.com:80").await.unwrap();
let stream = stream.compat();
-->>

Credits:

This crate derives heavy inspiration from: 1. 2.

About

Rust MQTT library based on the OASIS MQTT Version 5.0 Standard with WASM support (WIP)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published