0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-10-31 09:14:20 -04:00
denoland-deno/ext/websocket
Divy Srivastava 9e3d433249
fix(ext/websocket): extra ws pongs sent (#17762)
Fixes https://github.com/denoland/deno/issues/17761

Tugstenite already sends a pong for a recieved ping. This automatically
happens when the socket read is being driven. From
https://github.com/snapview/tokio-tungstenite/issues/88

> You need to read from the read-side of the socket so that it
receives/handles pings, and on the next write it would then send the
corresponding pong.

Here's the source:


e1033afd95/src/protocol/mod.rs (L374-L380)

```rust
// Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in
// response, unless it already received a Close frame. It SHOULD
// respond with Pong frame as soon as is practical. (RFC 6455)
if let Some(pong) = self.pong.take() {
  trace!("Sending pong reply");
  self.send_one_frame(stream, pong)?;
}
```

WIth this patch, all Autobahn tests from 1-8 pass. Fixed cases: 2.1,
2.2, 2.3, 2.4, 2.6, 2.9, 2.10, 2.11, 5.6, 5.7, 5.8, 5.19, 5.20

To run the test yourself, follow
https://www.notion.so/denolandinc/Autobahn-WebSocket-testsuite-723a86f450ce4823b4ef9cb3dc4c7869?pvs=4
2023-02-13 14:58:32 +00:00
..
01_websocket.js fix(ext/websocket): extra ws pongs sent (#17762) 2023-02-13 14:58:32 +00:00
02_websocketstream.js refactor: remove prefix from include_js_files & use extension name (#17683) 2023-02-07 21:09:50 +00:00
Cargo.toml chore: forward v1.30.3 release commit to main (#17677) 2023-02-07 04:15:38 +00:00
lib.deno_websocket.d.ts chore: update copyright year to 2023 (#17247) 2023-01-02 21:00:42 +00:00
lib.rs refactor: remove prefix from include_js_files & use extension name (#17683) 2023-02-07 21:09:50 +00:00
README.md Rename extensions/ directory to ext/ (#11643) 2021-08-11 12:27:05 +02:00

deno_websocket

This op crate implements the websocket functions of Deno.

Spec: https://html.spec.whatwg.org/multipage/web-sockets.html