feat: rtc peer connection send_offer, receive_offer

This commit is contained in:
Ahmet Kaan Gümüş 2025-04-13 04:55:33 +03:00
parent 0aa65f0f60
commit ffc802eb59
4 changed files with 102 additions and 28 deletions

View file

@ -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
}