Me enfrento a un comportamiento extraño con signalR. Lo uso solo en un componente (vue.js en mi interfaz de usuario). Cuando el usuario navega a otra página (tengo una aplicación de spa) en un evento destruido, intento cerrar la conexión. Estoy probando dos opciones:
JS: connection.stop(); BE: i catch disconnect message in public override Task OnDisconnectedAsync methodo
JS: connection.invoke('Resource', params); BE: await Groups.RemoveFromGroupAsync(Context.ConnectionId, "<group name>");La conexión se cierra con éxito, pero después de un tiempo (~ 15-20 segundos), la señal R intenta conectarse al servidor nuevamente (pero el componente no existe en el bloque de elementos). Después de un tiempo, se restauró la conexión, pero este componente no existe. Si actualizo mi página de spa (con F5), SignalR no intenta conectarse, pero si abro el componente con SignalR, la situación comienza de nuevo.
Tal vez alguien pueda ayudarme con:
Lo encontré. Creé un controlador de desconexión vacío e intenté capturar las conexiones.
public override Task OnDisconnectedAsync(Exception? exception) { //breakpoint here; }A algunos desarrolladores se les agrega otro concentrador SignalR en la aplicación (p. ej., otro componente en la interfaz de usuario) y se olvidan de cerrar la llamada al descargar el componente.
this.connection.stop()Por lo tanto, no olvide detener las conexiones de SignalR entre la interfaz de usuario y el servidor back-end.