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> { 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(()) }