Connection State Recovery: Client->Server resync

Offen
#5,363 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet

Rechercherichtung

Das Issue nennt keine Dateien, Tests oder Einstiegspunkte. Beginne damit, die vorhandenen Abläufe zur Wiederherstellung des Verbindungsstatus und zum erneuten Verbinden auf Client- und Serverseite nachzuverfolgen, und untersuche anschließend das wire format; als abgeschlossen gilt die Arbeit, wenn fehlende Client-zu-Server-Ereignisse nach einer erneuten Verbindung erneut versucht werden können und bestätigte Offsets dem Client ermöglichen, gepufferte Ereignisse zu löschen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

enhancement

Is your feature request related to a problem? Please describe.
Connection state recovery only recovers packets that are buffered on the server. On reconnect, these are then sent to the client. But client->server packets are not handled this way.

Describe the solution you'd like
I'd like to have connection state recovery support packet retry from client to server as well. All client->server events would include an offset. On reconnect the server would send the latest client->server offset to the client and the client would repeat any missing events.

It would be nice to send the client->server offset back to the client periodically, or perhaps on every server->client event. This way the client could quickly purge events from its buffer.

This would probably involve a change to the wire format.

Describe alternatives you've considered
Practically, we end up writing a lot of extra handlers on reconnect to resync client state back to the server.

Vorherrschende Sprache
TypeScript
Sterne
63.2k
Forks
10.2k
Ø Merge
6 T. 4 Std.
Gemergte PRs (30 T.)
6

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus socketio/socket.io

Alle Issues in socketio/socket.io

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.