worker_sys/ext/
websocket.rs1use wasm_bindgen::prelude::*;
2
3mod glue {
4 use super::*;
5
6 #[wasm_bindgen]
7 extern "C" {
8 #[wasm_bindgen]
9 pub type WebSocket;
10
11 #[wasm_bindgen(method, catch)]
12 pub fn accept(this: &WebSocket) -> Result<(), JsValue>;
13
14 #[wasm_bindgen(method, catch, js_name = "serializeAttachment")]
15 pub fn serialize_attachment(this: &WebSocket, value: JsValue) -> Result<(), JsValue>;
16
17 #[wasm_bindgen(method, catch, js_name = "deserializeAttachment")]
18 pub fn deserialize_attachment(this: &WebSocket) -> Result<JsValue, JsValue>;
19 }
20}
21
22pub trait WebSocketExt {
23 fn accept(&self) -> Result<(), JsValue>;
27
28 fn serialize_attachment(&self, value: JsValue) -> Result<(), JsValue>;
29
30 fn deserialize_attachment(&self) -> Result<JsValue, JsValue>;
31}
32
33impl WebSocketExt for web_sys::WebSocket {
34 fn accept(&self) -> Result<(), JsValue> {
35 self.unchecked_ref::<glue::WebSocket>().accept()
36 }
37
38 fn serialize_attachment(&self, value: JsValue) -> Result<(), JsValue> {
39 self.unchecked_ref::<glue::WebSocket>()
40 .serialize_attachment(value)
41 }
42
43 fn deserialize_attachment(&self) -> Result<JsValue, JsValue> {
44 self.unchecked_ref::<glue::WebSocket>()
45 .deserialize_attachment()
46 }
47}