Skip to content

Allow robust reconnects when client do not perform graceful disconnects #8003

Closed
@pranavkm

Description

@pranavkm

The renderer goes in a “buffering” mode when the client disconnects and spits it back out once it reconnects. In the most common case where the client has a transient network failure, this is what it would look like:

Connection
   | Send diff 1
   | Send diff 2
   | Send diff 3
Disconnected (client network error)
   | Send diff 4
   | Send diff 5
SignalR OnDisconnected is executed
  | Buffer diff 6 
Client reconnected
  | Send diff 6
  | Send diff 7

SignalR \ Kestrel do not complain if a websocket send failed due to a client error. Consequently, there will be a gap where the server thinks it successfully sent the diffs to the client, but it ended up in the ether.

The fix for this will be that we're going to queue the render batches on the server, and hold onto them until the client can ACK each one.

Metadata

Metadata

Assignees

Labels

DoneThis issue has been fixedarea-blazorIncludes: Blazor, Razor ComponentsbugThis issue describes a behavior which is not expected - a bug.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions