tutorial net mvc example español asp.net asp.net-mvc websocket signalr

asp.net - net - Reutilizando la misma conexión en signalR mientras navegas por diferentes páginas



signalr php (1)

Deberá crear una asignación del servidor de los usuarios a las identificaciones de conexión. Ver: Fábrica de conexión beta SignalR 1.0 .

Deberá dejar que los usuarios persistan más allá de un evento OnDisconnected y cuando se conecten con una Id de conexión diferente, puede continuar transfiriendo datos hacia ellos.

Entonces el proceso de pensamiento podría ser el siguiente:

  1. Cargas de página, la conexión SignalR se instancia
  2. Una vez que la conexión se haya iniciado por completo, llame a => TryCreateUser (devuelve un usuario, ya sea que exista o haya sido creado).
  3. El proceso de ejecución larga comienza
  4. El cliente cambia de página -> la conexión SignalR se detiene
  5. Nuevas cargas de página, nueva instancia de la conexión SignalR es instanciada
  6. Una vez que la conexión está completamente iniciada, vea si tiene una cookie, sesión o algún tipo de datos que represente quién es => TryCreateUser (userData) (devuelve el usuario que creó en la última página).
  7. Los datos continúan bombeando al usuario.

Nota: si toma un enfoque de autenticación, deberá autenticarse antes de iniciar una conexión y esos datos no pueden cambiar durante la vida útil de una conexión SignalR, solo se puede crear / modificar mientras la conexión está desconectada.

Tengo un proyecto MVC, con varias páginas.

Tengo un proceso de larga ejecución, que actualiza al cliente sobre su progreso. Sin embargo, esta actualización se envía solo a un único cliente, en lugar de transmitir a todos.

Clients.Client(ConnectionId).sendMessage(msg);

En mi layout.cshtml, así es como me conecto al hub

var serverHub = $.connection.notifier; window.hubReady = $.connection.hub.start(function () { });

El problema es que cuando navego a otra página, ya no recibo los mensajes del señalizador, porque la identificación de la conexión ha cambiado.

¿Cómo debo solucionar este problema, de modo que mi concentrador de señalizador aún pueda enviar mensajes a un único cliente, mientras el cliente navega de una página a otra?