use std::error::Error;
use futures::StreamExt;
use log::{debug, error, info, Level};
use tokio_tungstenite::connect_async;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
pub fn alert(s: &str);
}
#[wasm_bindgen]
pub fn send_chat(chat: &str) {
info!("sending chat: {}", chat);
}
#[wasm_bindgen]
pub async fn rust_init(gateway: &str, username: &str) {
console_log::init_with_level(Level::Debug).unwrap();
info!("Logger setup successfully");
match init(gateway, username).await {
Ok(_) => (),
Err(e) => {
error!("Error initializing gateway client: {}", e);
return;
}
}
info!("Gateway client initialized successfully");
}
pub async fn init(gateway: &str, username: &str) -> Result<(), Box<dyn Error>> {
info!("FAST CONNECT: {}", gateway);
let gateway_url = url::Url::parse(gateway)?;
debug!("Gateway URL parsed");
let (ws_stream, _) = connect_async(gateway_url).await?;
debug!("Connected to gateway socket");
let (tx, rx) = ws_stream.split();
debug!("Split stream, handshaking with server");
Ok(())
}