mvc example c# signalr

c# - example - signalr websocket



SignalR: detectar el estado de conexión en el cliente (2)

He visto cómo puede interceptar un evento de desconexión en el lado del cliente con SignalR vinculando al evento .disconnect.

Ahora que he hecho esto, quiero poner al cliente en un "ciclo de espera para volver a conectar" donde intenta conectarse continuamente hasta que tenga éxito o el usuario cancele el proceso. ¿El hub expone una propiedad de estado de conexión? Estoy pensando en algo así como (pseudo código)

var isConnected; function onConnected() { isConnected = true; } hub.disconnect = function() { while(hub.notconnected) { connect(); }


El cliente JS intenta volver a conectarse durante un período de tiempo determinado, que de forma predeterminada es de 110 segundos. Puede suscribirse al evento connection.stateChanged y obtener actualizaciones sobre cuándo cambia el estado para que pueda mostrarlo al usuario, o validar la respuesta de SignalR a diferentes escenarios de desconexión.

En mis pruebas, el estado se actualizó correctamente para desconectarlo y volver a conectarlo, como esperaría.

Más información sobre conexiones de señalización.

function connectionStateChanged(state) { var stateConversion = {0: ''connecting'', 1: ''connected'', 2: ''reconnecting'', 4: ''disconnected''}; console.log(''SignalR state changed from: '' + stateConversion[state.oldState] + '' to: '' + stateConversion[state.newState]); } connection = $.connection(signalR_Endpoint); connection.stateChanged(connectionStateChanged); connection.start({ waitForPageLoad: false });


El cliente siempre está tratando de conectarse. No tienes que preocuparte por eso. Hay un evento reconectado que puede escuchar, en caso de que quiera hacer algo cuando la conexión se haya restablecido con éxito.

EDITAR: Esto cambió, el cliente solo intenta reconectarse durante un cierto período de tiempo. Después de eso, debes capturar el evento de desconexión y reiniciarlo manualmente.