rust_webrtc/client/src/signal.rs

75 lines
2.1 KiB
Rust
Raw Normal View History

use std::sync::LazyLock;
use chrono::DateTime;
use leptos::logging::log;
use protocol::{RTCSessionOffer, Signal};
use reqwest::Response;
use serde_json::{Value, json};
const SIGNALLING_ADDRESS: &str = "http://127.0.0.1:4546";
static REQUEST_CLIENT: LazyLock<reqwest::Client> = LazyLock::new(|| reqwest::Client::new());
async fn post_json(json: &Value) -> Result<Response, reqwest::Error> {
REQUEST_CLIENT
.post(SIGNALLING_ADDRESS)
.json(json)
.send()
.await
}
pub async fn start_signalling(username: String) {
log!("Start Signalling");
log!("{}\n{}", username, SIGNALLING_ADDRESS);
let signal = Signal {
username,
time: DateTime::default(),
};
let json = json!(signal);
match post_json(&json).await {
Ok(signal_response) => log!("{:#?}", signal_response),
Err(err_val) => {
log!("Error: Signal Post | {}", err_val);
}
}
}
pub async fn send_offer(rtc_session_offer: RTCSessionOffer) {
let rtc_session_offer = json!(rtc_session_offer);
match post_json(&rtc_session_offer).await {
Ok(signal_response) => log!("{:#?}", signal_response),
Err(err_val) => {
log!("Error: Signal Post | {}", err_val);
}
}
}
pub async fn receive_offer(username: String) {
let json = json!(username);
match post_json(&json).await {
Ok(signal_response) => log!("{:#?}", signal_response),
Err(err_val) => {
log!("Error: Signal Post | {}", err_val);
}
}
}
pub async fn send_answer(rtc_session_offer: RTCSessionOffer) {
let rtc_session_offer = json!(rtc_session_offer);
match post_json(&rtc_session_offer).await {
Ok(signal_response) => log!("{:#?}", signal_response),
Err(err_val) => {
log!("Error: Signal Post | {}", err_val);
}
}
}
pub async fn receive_answer(username: String) {
let json = json!(username);
match post_json(&json).await {
Ok(signal_response) => log!("{:#?}", signal_response),
Err(err_val) => {
log!("Error: Signal Post | {}", err_val);
}
}
}