mirror of
https://github.com/denoland/deno.git
synced 2024-12-21 23:04:45 -05:00
fix(runtime): send ws ping frames from inspector server (#26352)
Every 30 seconds the websocket server will now send a ping frame, so that the TCP socket stays alive.
This commit is contained in:
parent
63f6dd355c
commit
33ceae4ce5
1 changed files with 7 additions and 0 deletions
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue