Si usted tiene un requisito complejo conjunto con muchos usuarios (servidores) & cómo será su infraestructura WebSocket (servidor [s]) se escala, especialmente con la difusión?WebSocket escalabilidad, la radiodifusión se refiere a
Por supuesto, la radiodifusión no es parte de ninguna especificación de websocket, pero está ahí incluso en ejemplos básicos de chat (a.k.a. hello world for websocket).
La solución del lado del cliente (que solicita nuevos datos) parece aún más escalable que la solución del lado del servidor (difusión) con baja latencia de websockets y naturaleza relativamente barata (sin encabezado http).
Editar:
bien, sólo piensan que desea reemplazar todo el código AJAX con implementaciones WebSocket que puede significar que tantas conexiones dentro de contextos tan diferentes. Esto agrega una enorme complejidad a su sistema si desea realizar un seguimiento de todos los escenarios posibles para la transmisión.
Bajos (red/hilo, etc.) sugerencias de implementación de nivel son también parte del problema no la solución, porque esto significa que hay que codificar un servidor especial a diferencia de los servidores HTTP general.
Por otra parte, la radiodifusión trae algún tipo de carácter de estado a la mesa que no puede escalar fácilmente. Piense en agregar más servidores y balanceo de carga.
En mi humilde opinión, "saber quiénes son todos los clientes" no es tan fácil en el lado del servidor del desarrollo de websocket. Debe hacer un seguimiento de todos en su contexto de manera eficiente y también tener más de un servidor lo hace más complejo. IMO, solicitar nuevos datos es más escalable porque la implementación de su servidor no tiene que conocer a los clientes para que pueda agregar fácilmente nuevos servidores. Y una vez más, no es realmente una pérdida de ancho de banda si lo mantienes pequeño y puedes hacerlo con un websocket http sin cabeza. –
No importa lo que haga, el servidor debe conocer a los clientes porque debe mantener una lista de los sockets abiertos. Sin una lista de sockets abiertos, no podrá escuchar los datos entrantes de ellos (por ejemplo, no sabrá qué lista de descriptores de archivos pasar a las funciones 'select' o' epoll'). También necesita hacer un seguimiento de un búfer para los datos entrantes y salientes, creo. No puede olvidarse de las conexiones abiertas de TCP/IP. Como de todos modos está haciendo un seguimiento de esa lista, no debería ser demasiado difícil agregar algunos de sus propios datos de identificación a esa lista, si es necesario. –
Estás a punto de mezclar conceptos de sesión y socket; el primero es el nivel de la aplicación y el segundo es el nivel de la red como usted sabe. En la práctica, no quieres ir tan profundo, yo tampoco. En mi humilde opinión, es mejor pensar este problema en el nivel de aplicación. –