feat: ✨ rtc peer connection send_offer, receive_offer
This commit is contained in:
parent
0aa65f0f60
commit
ffc802eb59
4 changed files with 102 additions and 28 deletions
|
@ -4,7 +4,10 @@ use leptos::{
|
|||
ev,
|
||||
html::{ElementChild, button, form, input},
|
||||
logging::log,
|
||||
prelude::{BindAttribute, Get, OnAttribute, Read, Show, ShowProps, ToChildren, signal},
|
||||
prelude::{
|
||||
BindAttribute, Get, OnAttribute, Read, ReadSignal, Show, ShowProps, ToChildren,
|
||||
WriteSignal, signal,
|
||||
},
|
||||
server::LocalResource,
|
||||
task::spawn_local,
|
||||
};
|
||||
|
@ -38,42 +41,45 @@ pub fn app() -> impl IntoView {
|
|||
}))
|
||||
.fallback(|| button().child("Sad Button"))
|
||||
.build();
|
||||
(Show(props), signalling(), rtc())
|
||||
let username = signal(String::from(""));
|
||||
(Show(props), signalling(username), rtc(username.0))
|
||||
}
|
||||
|
||||
fn signalling() -> impl IntoView {
|
||||
let signalling_server_input_data = signal(String::new());
|
||||
fn signalling(username: (ReadSignal<String>, WriteSignal<String>)) -> impl IntoView {
|
||||
let signalling_trigger = move || {
|
||||
spawn_local(start_signalling(
|
||||
"Zurna Dürüm".to_string(),
|
||||
signalling_server_input_data.0.get(),
|
||||
))
|
||||
spawn_local(start_signalling(username.0.get()));
|
||||
};
|
||||
let signalling_server_input = form()
|
||||
.child(
|
||||
input()
|
||||
.bind(Value, signalling_server_input_data)
|
||||
.placeholder("0.0.0.0:4546")
|
||||
.bind(Value, username)
|
||||
.placeholder("Some Username")
|
||||
.r#type("text"),
|
||||
)
|
||||
.on(ev::submit, move |event| {
|
||||
event.prevent_default();
|
||||
signalling_trigger()
|
||||
signalling_trigger();
|
||||
});
|
||||
|
||||
let signalling_submit_button = button()
|
||||
.on(ev::click, move |_| signalling_trigger())
|
||||
.on(ev::click, move |event| {
|
||||
event.prevent_default();
|
||||
signalling_trigger();
|
||||
})
|
||||
.child("Signal");
|
||||
(signalling_server_input, signalling_submit_button)
|
||||
}
|
||||
|
||||
fn rtc() -> impl IntoView {
|
||||
let rtc_trigger = || {
|
||||
spawn_local(offer());
|
||||
fn rtc(username: ReadSignal<String>) -> impl IntoView {
|
||||
let rtc_trigger = move || {
|
||||
spawn_local(offer(username.get()));
|
||||
};
|
||||
|
||||
let rtc_start_button = button()
|
||||
.on(ev::click, move |_| rtc_trigger())
|
||||
.on(ev::click, move |event| {
|
||||
event.prevent_default();
|
||||
rtc_trigger();
|
||||
})
|
||||
.child("RTC Offer");
|
||||
rtc_start_button
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue