Divulgación - Yo trabajo para Caplin.
Hay un poco de información errónea en esta página así que me gustaría tratar de hacerlo más claro ..
creo que podríamos dividir los métodos de los que estamos hablando en tres campos ..
- Comet HTTP de votación - incluyendo sondeo largo
- Comet transmisión HTTP - servidor para los mensajes del cliente utilizar un único socket constante sin sobrecarga de cabecera HTTP después de la configuración inicial
- Comet WebSocket - solo socket bidireccional
Los veo a todos como Comet, ya que Comet es solo un paradigma, pero desde que salió WebSocket algunas personas quieren tratarlo como si fuera diferente o reemplaza a Comet, pero es solo otra técnica, y a menos que sea contentos solo de soportar los últimos navegadores, entonces no puedes simplemente confiar en WebSocket.
En lo que a rendimiento se refiere, la mayoría de los puntos de referencia se concentran en el servidor de mensajes del cliente - número de usuarios, número de mensajes por segundo, y la latencia de los mensajes. Para este escenario, no existe una diferencia fundamental entre HTTP Streaming y WebSocket: ambos escriben mensajes en un socket abierto con poco o ningún encabezado o sobrecarga.
sondeo largo puede dar buena latencia si la frecuencia de los mensajes es baja. Sin embargo, si tiene dos mensajes (servidor a cliente) en rápida sucesión, el segundo no llegará al cliente hasta que se realice una nueva solicitud después de que se reciba el primer mensaje.
Creo que alguien tocó en HTTP KeepAlive. Obviamente, esto puede mejorar el sondeo largo: aún tiene la sobrecarga de la ida y vuelta y los encabezados, pero no siempre la creación del socket.
Dónde WebSocket debe mejorar Streaming HTTP en escenarios en los que hay más en el cliente a los mensajes del servidor. Relacionar estos escenarios con el mundo real crea configuraciones un poco más arbitrarias, en comparación con la simple comprensión de "enviar muchos mensajes a muchos clientes" que todos puedan entender. Por ejemplo, en una aplicación de comercio, la creación de un escenario en el que se incluyen los usuarios que ejecutan las operaciones (es decir, el cliente de mensajes del servidor) es fácil, pero los resultados de un poco menos significativo que el servidor de base de escenarios de cliente. Los operadores no están tratando de hacer 100 operaciones/seg. Por lo que se obtienen resultados como "10000 usuarios que reciben 100 mensajes/seg mientras también envían un mensaje al cliente una vez cada 5 minutos". La parte más interesante para el mensaje del cliente al servidor es la latencia, ya que la cantidad de mensajes requeridos generalmente es insignificante en comparación con los mensajes del servidor al cliente.
Otro punto que alguien ha mencionado anteriormente, alrededor de 64k clientes, No necesita hacer nada inteligente para admitir más de 64k sockets en un servidor, aparte de configurar los descriptores de los archivos de número, etc. Si estaba intentando hacer una conexión de 64k desde una máquina de cliente único, que es totalmente diferente, ya que necesitan un número de puerto para cada uno; en el extremo del servidor está bien, es el extremo de escucha, y puede ir por encima de los sockets de 64 k.
Su enlace Caplin está roto. – kanaka
Un comentario sobre 'HTML 5 websockets vs Comet': como se indica en otros comentarios a continuación, Caplin's Liberator, junto con varios otros servidores 'Comet', admiten WebSockets como mecanismo de conexión. ¿Cuándo un servidor deja de ser un servidor Comet? Si usa WebSockets, ¿sigue siendo un servidor Comet? ¿Comet es un término general para HTTP-Long Polling y HTTP Streaming? Recomiendo leer [Los rumores de la muerte de Comet han sido muy exagerados] (http://blog.caplin.com/2009/12/17/the-rumours-of-comets-death-have-been-greatly-exaggerated /). – leggetter
Voy a mantener esto como un comentario por ahora. Pero también debería considerar EventSource (también conocido como Eventos enviados por el servidor) como una opción. Hace que el escalado a muchos servidores sea mucho más fácil porque es unidireccional (solo de inserción). – igorw