Skip to content

Commit

Permalink
fix(runtime): send ws ping frames from inspector server (#26352)
Browse files Browse the repository at this point in the history
Every 30 seconds the websocket server will now send a ping frame, so
that the TCP socket stays alive.
  • Loading branch information
lucacasonato authored Oct 17, 2024
1 parent 63f6dd3 commit 33ceae4
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions runtime/inspector_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ use deno_core::InspectorSessionProxy;
use deno_core::JsRuntime;
use fastwebsockets::Frame;
use fastwebsockets::OpCode;
use fastwebsockets::Payload;
use fastwebsockets::WebSocket;
use hyper::body::Bytes;
use hyper_util::rt::TokioIo;
Expand All @@ -33,6 +34,7 @@ use std::pin::pin;
use std::process;
use std::rc::Rc;
use std::thread;
use std::time::Duration;
use tokio::net::TcpListener;
use tokio::sync::broadcast;
use uuid::Uuid;
Expand Down Expand Up @@ -393,8 +395,13 @@ async fn pump_websocket_messages(
inbound_tx: UnboundedSender<String>,
mut outbound_rx: UnboundedReceiver<InspectorMsg>,
) {
let mut ticker = tokio::time::interval(Duration::from_secs(30));

'pump: loop {
tokio::select! {
_ = ticker.tick() => {
let _ = websocket.write_frame(Frame::new(true, OpCode::Ping, None, Payload::Borrowed(&[]))).await;
}
Some(msg) = outbound_rx.next() => {
let msg = Frame::text(msg.content.into_bytes().into());
let _ = websocket.write_frame(msg).await;
Expand Down

0 comments on commit 33ceae4

Please sign in to comment.