leptos_ws

Crates.ioleptos_ws
lib.rsleptos_ws
version0.7.0-beta5
sourcesrc
created_at2024-08-31 10:54:08.628069
updated_at2024-09-28 15:26:27.97407
descriptionLeptos WS is a Websocket for the Leptos framework to support updates coordinated from the Server
homepage
repositoryhttps://github.com/TimTom2016/leptos_ws
max_upload_size
id1358735
size40,583
(TimTom2016)

documentation

https://docs.rs/leptos_ws/latest/

README

Leptos Websocket

Crates.io docs.rs

Leptos Websocket provides server signals for Leptos, keeping them in sync with the server through WebSockets. This enables real-time updates on the UI controlled by the server.

Features

  • Server Signals: Read-only signals on the client side, writable by the server.
  • Real-time Updates: Changes to signals are sent through WebSockets as JSON patches.
  • Framework Integration: Supports integration with the Axum web framework.

Installation

Add the following to your Cargo.toml:

[dependencies]
leptos_ws = "0.7.0-beta4"
serde = { version = "1.0", features = ["derive"] }

[features]
ssr = ["leptos_ws/ssr", "leptos_ws/axum"]

Usage

Client-side

use leptos::*;
use serde::{Deserialize, Serialize};

#[component]
pub fn App() -> impl IntoView {
    // Connect to WebSocket
    leptos_ws::provide_websocket("http://localhost:3000/ws");

    // Create server signal
    let count = leptos_ws::ServerSignal::new("count".to_string(), 0 as i32).unwrap();

    view! {
        <h1>"Count: " {move || count.get().to_string()}</h1>
    }
}

Server-side (Axum)

Server-side implementation requires additional setup. Refer to the example for detailed examples.

Feature Flags

  • ssr: Enable server-side rendering support.
  • axum: Enable integration with the Axum web framework.

Documentation

For more detailed information, check out the API documentation.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Commit count: 22

cargo fmt