Para comenzar con Hubs, lea WIKI entry for Hubs y Client Side of Hubs. Hay un par de cosas de acuerdo con el contexto de varias páginas.
- Al iniciar un centro que le da a su cliente un documento de identidad que se mantiene la misma para ese centro (alguien puede confirmar con el ejemplo) a través de múltiples páginas.
- No está mal volver a abrir la conexión al mismo concentrador. Es posible que el método hub.start del cliente se ejecute en todas las páginas; sin embargo, si un cliente abre varias ventanas o pasa de una página a otra, tendrá la misma ID de conexión en ese concentrador para que pueda mantenerse en contacto. Si se trata de múltiples concentradores, debe gestionar los centros así como los ID de conexión. Entonces, esta pregunta es como "¿Es malo tener múltiples ISP que sirven mi conexión a Internet para diferentes sitios web". Puedes tenerlos, pero es un exceso. Un solo ISP puede serverle todas las páginas a usted también.
- Los múltiples concentradores en una sola página no son ideales, pero funcionarán. De nuevo, la respuesta necesita un poco de contexto para el problema, pero en general puede diferenciar entre varias solicitudes en la misma ID de conexión a través de grupos o utilizando otro enfoque basado en parámetros. Tener dos concentradores en la misma página puede llevar más recursos (es necesario probar esto) que usar parámetros o grupos para separar diferentes áreas de mensajes.
Ejemplo:
Tienes una página que tiene dos partes, una gráfica que muestra la actividad del usuario en tiempo real y una zona para ver los cambios de datos en tiempo real realizadas por los usuarios como una mesa. ¿Creará dos centros o dos grupos o qué? Hay otras páginas que usan el mismo gráfico y tabla de datos.
Mi Solución:
- Voy a crear un único centro para la aplicación para recibir los datos en tiempo real desde el servidor.
- Crearé diferentes métodos en el servidor para enviar puntos de gráficos y tablas de datos.
- Crearé el método del lado del cliente en todas las páginas que usan estos gráficos para comunicarme con los métodos del servidor en el mismo concentrador.
Al cambiar de una página a otra, el cliente se conectará con el mismo concentrador y solicitará getGraph o getDataTable o ambos y completará su cliente con datos relevantes. Del mismo modo en el servidor cuando los datos cambian puede llamar al método del lado del cliente para actualizar todos los clientes o grupo de ellos (agreguemos esta complejidad)
Supongamos que tiene estudiantes y profesores mirando su aplicación. Requieren un diferente nivel de acceso a los datos. Puede usar grupos para mantenerlos separados en el centro, por lo que no está enviando información de maestros a los estudiantes y datos de los estudiantes a los maestros.
- En su unión hub puede agregarlas para unirse a un grupo asociado con su función o cualquier función diferenciadora.
- Cuando envía a todos los clientes, ahora puede enviarlo a grupos de clientes que son profesores o estudiantes. No creando otro centro para profesores o estudiantes, todos están en el mismo centro.
Volviendo a su pregunta de "es malo" y "está bien", esto es difícil de establecer sin contexto de aplicación real. No puedo pensar en un escenario en el que puedas justificar varios centros aparte de Performance.
La aplicación tiene diferentes concentradores para diferentes tipos de datos. Nuestra aplicación es bastante grande, y es una separación lógica de preocupaciones. Algunos clientes front-end solo necesitan un subconjunto de datos activos, y tiene sentido tener un centro al que puedan conectarse, en lugar de administrar grupos. –
Según lo sugerido por @sam en respuesta, puede hacerlo y se explica aquí http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#multiplehubs –
I Estoy enterado, y así es como he configurado mi aplicación. Solo estaba comentando porque dijiste que no puedes pensar en un escenario donde puedas justificar varios centros –