mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-28 04:01:33 +00:00
added websockets example to the guide
This commit is contained in:
@ -8,10 +8,10 @@ edition = "2018"
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
wasm-bindgen = "0.2.44"
|
||||
wasm-bindgen = "0.2.45"
|
||||
|
||||
[dependencies.web-sys]
|
||||
version = "0.3.21"
|
||||
version = "0.3.22"
|
||||
features = [
|
||||
"ErrorEvent",
|
||||
"MessageEvent",
|
||||
|
@ -21,5 +21,3 @@ http
|
||||
# or use python
|
||||
python -m SimpleHTTPServer
|
||||
```
|
||||
|
||||
Make sure that you have `WebSockets` server running
|
||||
|
@ -7,4 +7,4 @@
|
||||
</head>
|
||||
<bodt>
|
||||
</bodt>
|
||||
</html>
|
||||
</html>
|
||||
|
@ -14,16 +14,17 @@ extern "C" {
|
||||
|
||||
#[wasm_bindgen(start)]
|
||||
pub fn start_websocket() -> Result<(), JsValue> {
|
||||
// Assuming, you run a WebSockets server at localhost:8081
|
||||
// You'll also need to disable CORS in case of serving this example from
|
||||
// the different `host:port` then your WebSockets server
|
||||
let ws = WebSocket::new("ws://localhost:8081")
|
||||
.expect("should create a socket");
|
||||
// Connect to an echo server
|
||||
let ws = WebSocket::new("wss://echo.websocket.org")?;
|
||||
|
||||
// create callback
|
||||
let onmessage_callback = Closure::wrap(Box::new(move |e: MessageEvent| {
|
||||
// handle message
|
||||
console_log!("message event, received data {:?}", e.data());
|
||||
let response = e
|
||||
.data()
|
||||
.as_string()
|
||||
.expect("Can't convert received data to a string");
|
||||
console_log!("message event, received data: {:?}", response);
|
||||
}) as Box<dyn FnMut(MessageEvent)>);
|
||||
// set message event handler on WebSocket
|
||||
ws.set_onmessage(Some(onmessage_callback.as_ref().unchecked_ref()));
|
||||
@ -31,7 +32,7 @@ pub fn start_websocket() -> Result<(), JsValue> {
|
||||
onmessage_callback.forget();
|
||||
|
||||
let onerror_callback = Closure::wrap(Box::new(move |e: ErrorEvent| {
|
||||
console_log!("error event {:?}", e);
|
||||
console_log!("error event: {:?}", e);
|
||||
}) as Box<dyn FnMut(ErrorEvent)>);
|
||||
ws.set_onerror(Some(onerror_callback.as_ref().unchecked_ref()));
|
||||
onerror_callback.forget();
|
||||
@ -40,8 +41,8 @@ pub fn start_websocket() -> Result<(), JsValue> {
|
||||
let onopen_callback = Closure::wrap(Box::new(move |_| {
|
||||
console_log!("socket opened");
|
||||
match cloned_ws.send_with_str("ping") {
|
||||
Ok(_) => console_log!("message sent successfully"),
|
||||
Err(err) => console_log!("error sending message {:?}", err),
|
||||
Ok(_) => console_log!("message successfully sent"),
|
||||
Err(err) => console_log!("error sending message: {:?}", err),
|
||||
}
|
||||
}) as Box<dyn FnMut(JsValue)>);
|
||||
ws.set_onopen(Some(onopen_callback.as_ref().unchecked_ref()));
|
||||
|
Reference in New Issue
Block a user