use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
pub type WebSocketPair;
#[wasm_bindgen(constructor)]
pub fn new() -> WebSocketPair;
#[wasm_bindgen(method, getter, js_name = "0")]
pub fn client(this: &WebSocketPair) -> WebSocket;
#[wasm_bindgen(method, getter, js_name = "1")]
pub fn server(this: &WebSocketPair) -> WebSocket;
}
#[wasm_bindgen]
extern "C" {
#[derive(Clone)]
pub type WebSocket;
#[wasm_bindgen(method)]
pub fn accept(this: &WebSocket);
#[wasm_bindgen(method, catch)]
pub fn send(this: &WebSocket, data: &JsValue) -> Result<(), JsValue>;
#[wasm_bindgen(method, catch)]
pub fn close(this: &WebSocket, code: Option<u16>, reason: Option<&str>) -> Result<(), JsValue>;
#[wasm_bindgen(method, js_name = addEventListener)]
pub fn add_event_listener(this: &WebSocket, event: &str, handler: &js_sys::Function);
#[wasm_bindgen(method, js_name = removeEventListener)]
pub fn remove_event_listener(this: &WebSocket, event: &str, handler: &js_sys::Function);
}
#[wasm_bindgen]
extern "C" {
pub type MessageEvent;
#[wasm_bindgen(method, getter)]
pub fn data(this: &MessageEvent) -> JsValue;
}
#[wasm_bindgen]
extern "C" {
pub type CloseEvent;
#[wasm_bindgen(method, getter)]
pub fn code(this: &CloseEvent) -> u16;
#[wasm_bindgen(method, getter)]
pub fn reason(this: &CloseEvent) -> String;
#[wasm_bindgen(method, getter, js_name = wasClean)]
pub fn was_clean(this: &CloseEvent) -> bool;
}
#[wasm_bindgen]
extern "C" {
pub type ErrorEvent;
#[wasm_bindgen(method, getter)]
pub fn message(this: &ErrorEvent) -> String;
}