diff --git a/Cargo.toml b/Cargo.toml index 7d25d1b..7a98094 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,7 +62,7 @@ features = [ "NodeList", "PointerEvent", "ReadableStream", - "ReadableStreamByobReader", + "ReadableStreamDefaultReader", "ReadableStreamGetReaderOptions", "ReadableStreamReaderMode", "ResizeObserver", diff --git a/examples/use_webtransport/src/main.rs b/examples/use_webtransport/src/main.rs index 1cd1f65..da7b23d 100644 --- a/examples/use_webtransport/src/main.rs +++ b/examples/use_webtransport/src/main.rs @@ -1,10 +1,17 @@ use leptos::*; +use leptos_use::core::ConnectionReadyState; use leptos_use::docs::demo_or_body; -use leptos_use::use_webtransport; +use leptos_use::{use_webtransport_with_options, UseWebTransportOptions}; #[component] fn Demo() -> impl IntoView { - let transport = use_webtransport("https://echo.webtransport.day"); + let (log, set_log) = create_signal(vec![]); + + let transport = use_webtransport_with_options( + "https://echo.webtransport.day", + UseWebTransportOptions::default() + .on_error(|e| set_log.update(|log| log.push(format!("Error: {:?}", e)))), + ); let (text, set_text) = create_signal("".to_string()); @@ -12,13 +19,57 @@ fn Demo() -> impl IntoView { let transport = transport.clone(); move |e| { + set_log.update(|log| log.push(format!("Sent datagram: '{}'", text()))); + transport.send_datagrams(text().as_bytes()); } }; + let ready_state = transport.ready_state; + + let _ = watch( + ready_state, + move |ready, prev_ready, _| { + if ready == &ConnectionReadyState::Open + && prev_ready.unwrap_or(&ConnectionReadyState::Closed) + != &ConnectionReadyState::Open + { + set_log.update(|log| log.push("Connection opened".to_string())); + } else if ready == &ConnectionReadyState::Closed + && prev_ready.unwrap_or(&ConnectionReadyState::Open) + != &ConnectionReadyState::Closed + { + set_log.update(|log| log.push("Connection closed".to_string())); + } + }, + false, + ); + + let _ = watch( + transport.datagrams, + move |grams, _, _| { + if let Some(grams) = grams { + set_log.update(|log| { + log.push(format!( + "Received datagrams: '{}'", + String::from_utf8(grams.clone()).expect("valid utf8") + )) + }); + } + }, + false, + ); + view! { +

Datagrams