Implement `ping-pong` for WebSocket clients (#772)
* ws: Implement ping for `TransportSenderT` trait Signed-off-by: Alexandru Vasile <[email protected]> * ws/client: Receive pong frames Signed-off-by: Alexandru Vasile <[email protected]> * core/client: Use `select!` macro for the background task Signed-off-by: Alexandru Vasile <[email protected]> * client: Propagate ping interval to background task Signed-off-by: Alexandru Vasile <[email protected]> * async_client: Submit ping requests Signed-off-by: Alexandru Vasile <[email protected]> * async_client: Handle pong replies Signed-off-by: Alexandru Vasile <[email protected]> * client: Handle frontend messages to dedicated fn Signed-off-by: Alexandru Vasile <[email protected]> * client: Handle backend messages in dedicated fn Signed-off-by: Alexandru Vasile <[email protected]> * client: Add terminated fuse for opt-out pings Signed-off-by: Alexandru Vasile <[email protected]> * Set opt-out behavior for client pings Signed-off-by: Alexandru Vasile <[email protected]> * client: Move imports Signed-off-by: Alexandru Vasile <[email protected]> * client: Handle handle_frontend_messages errors Signed-off-by: Alexandru Vasile <[email protected]> * client: Add custom error related to byteslice conversions Signed-off-by: Alexandru Vasile <[email protected]> * client: Modify `send_ping` to send empty slices Signed-off-by: Alexandru Vasile <[email protected]> * Fix `cargo hack check` and use `select_biased` Signed-off-by: Alexandru Vasile <[email protected]> * Handle sending pings with lowest priority Signed-off-by: Alexandru Vasile <[email protected]> * core: Add proper number of params to `background_task` Signed-off-by: Alexandru Vasile <[email protected]> * Fix wasm client Signed-off-by: Alexandru Vasile <[email protected]> * Handle raw bytes and string received messages Signed-off-by: Alexandru Vasile <[email protected]> * Fix Cargo.toml feature Signed-off-by: Alexandru Vasile <[email protected]> * Panic when empty slice does not fit into `ByteSlice125` Signed-off-by: Alexandru Vasile <[email protected]> * wasm: Add operation not supported for pings Signed-off-by: Alexandru Vasile <[email protected]> * Rename `ReceivedMessage` from Data to Text Signed-off-by: Alexandru Vasile <[email protected]> * Rename test variable Signed-off-by: Alexandru Vasile <[email protected]> * Add documentation Signed-off-by: Alexandru Vasile <[email protected]> * client: Use `future::select` for cancel safety Signed-off-by: Alexandru Vasile <[email protected]> * client: Remove `pong` handling logic Signed-off-by: Alexandru Vasile <[email protected]> * client: Update ping documentation Signed-off-by: Alexandru Vasile <[email protected]> * Update core/src/client/async_client/mod.rs Co-authored-by: Tarik Gul <[email protected]> * Update core/src/client/async_client/mod.rs Co-authored-by: Tarik Gul <[email protected]> * Update core/src/client/async_client/mod.rs Co-authored-by: Tarik Gul <[email protected]> * Update core/src/client/async_client/mod.rs Co-authored-by: Tarik Gul <[email protected]> * Update core/src/client/async_client/mod.rs Co-authored-by: Tarik Gul <[email protected]> * Update core/Cargo.toml Co-authored-by: Niklas Adolfsson <[email protected]> * Update core/Cargo.toml Co-authored-by: Niklas Adolfsson <[email protected]> * logs: Keep debug log for submitting `Ping` frames Signed-off-by: Alexandru Vasile <[email protected]> * Print debug logs when receiving `Pong` frames Signed-off-by: Alexandru Vasile <[email protected]> * Update core/src/client/async_client/mod.rs Co-authored-by: Tarik Gul <[email protected]> Co-authored-by: Niklas Adolfsson <[email protected]>