You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#![no_std]use ewebsock::{WsReceiver,WsSender};use js_sys::Promise;use log::Level;use tokio::sync::OnceCell;use wasm_bindgen::prelude::*;use wasm_bindgen_futures::JsFuture;pubstaticmutWS_SENDER:OnceCell<WsSender> = OnceCell::const_new();pubstaticmutWS_RECEIVER:OnceCell<WsReceiver> = OnceCell::const_new();#[wasm_bindgen]pubfninit_logging() -> Result<(),JsValue>{// init logging
console_log::init_with_level(Level::Debug).map_err(|_| JsValue::from_str("Failed to init logging"))?;// returnOk(())}#[wasm_bindgen]pubasyncfninit_websocket() -> Result<JsValue,JsValue>{// init websocket
log::info!("initializing websocket");let(sender, receiver) = ewebsock::connect("ws://127.0.0.1:3000").map_err(|_| JsValue::from_str("Failed to call WebSocket API"))?;let _ = unsafe{WS_SENDER.set(sender)};let _ = unsafe{WS_RECEIVER.set(receiver)};// TODO: we actually need to poll for Event::OnOpened but we can't here until we return and call from another function?// returnlet promise = Promise::resolve(&true.into());let result = JsFuture::from(promise).await?;Ok(result)}#[wasm_bindgen]pubasyncfnread_from_websocket() -> Result<JsValue,JsValue>{for _ in0..100{let result = unsafe{WS_RECEIVER.get().unwrap().try_recv()};if result.is_some(){let result = result.unwrap();
log::info!("{:?}", result);}}// returnlet promise = Promise::resolve(&JsValue::NULL);let result = JsFuture::from(promise).await?;Ok(result)}
[package]
name = "websocket_client"version = "0.1.0"edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type = ["cdylib"]
[dependencies]
# logginglog = "0.4.20"console_log = "1.0.0"# websocketewebsock = "0.4.0"# webassemblywasm-bindgen = "0.2"web-sys = { version = "0.3", features = ["console"] }
js-sys = "0.3"wasm-bindgen-futures = "0.4"# static inittokio = { version = "1", features = ["sync"] }
The text was updated successfully, but these errors were encountered:
The text was updated successfully, but these errors were encountered: