WebSocket `Closed` fires up to 10 s after the connection is closed

Aperta Adatta ai principianti
#53 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
networking

Direzione di ricerca

Leggi il ciclo di ping in MaxLib.WebServer/WebSocket/WebSocketConnection.cs righe 119-135, dove avviene l'attesa di 10 s e SendCloseSignal viene controllato solo dopo. Guarda anche come viene impostato il segnale di chiusura e dove viene generato Closed, così che l'attesa possa essere annullata quando il segnale viene impostato (ad es. un ritardo annullabile o un'attesa guidata dal segnale invece di un ritardo fisso). Fatto significa che Closed scatta non appena entrambe le parti hanno scambiato frame di chiusura, senza che la pulizia dell'endpoint sia più ritardata. Non viene nominato alcun file di test, quindi verifica eseguendo un handshake di chiusura in locale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug severity:low

The ping loop waits 10 s between pings and only checks SendCloseSignal after the wait
(WebSocketConnection.cs#L119-L135).
After both sides have exchanged close frames, Closed is raised only when the current wait ends. That can be up to 10 s later.
Cleanup that depends on Closed, such as removing the connection from the endpoint, is delayed by the same amount.

Expected: the wait is cancelled when the connection closes, so Closed fires right away.

Lingua principale
C#
Stelle
1
Fork
3
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Garados007/MaxLib.WebServer

Tutte le issue di Garados007/MaxLib.WebServer

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.