Foros del Web » Programando para Internet » Javascript »

Socket.io tumba a Ajax

Estas en el tema de Socket.io tumba a Ajax en el foro de Javascript en Foros del Web. Estuve haciendo unas pruebas con respecto a la velocidad de envío y recepción de datos de Ajax y socket.io. Aunque la arquitectura no tiene nada ...
  #1 (permalink)  
Antiguo 01/09/2012, 20:18
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 9 meses
Puntos: 127
Pregunta Socket.io tumba a Ajax

Estuve haciendo unas pruebas con respecto a la velocidad de envío y recepción de datos de Ajax y socket.io.

Aunque la arquitectura no tiene nada que ver, y el modelo funcional prácticamente está más de lado de Socket.io con respecto a la velocidad. Viene bien tener en cuenta los resultados que obtuve al escribir un pequeño script que testa el envío de un string al servidor y la respuesta del servidor con tal cadena.

Apache/php5 por puerto TCP 80 en petición AJAX mediante POST (y cabeceras estándar de petición y respuesta) tarda aproximadamente 4 segundos. Socket.io/NodeJS por puerto TCP 1026 sólo con módulo socket.io en emisión y recepción de datos mediante emisión y listener (emit y on) tarda 0,1 segundos.

La cantidad de datos transferida es "virtualmente" la misma, y el tiempo transcurrido es varias veces menor. Virtualmente significa que se omite el peso de las cabeceras, ya que teóricamente forma parte de la misma arquitectura, aunque se que esto pueda ser muy reprochable, ya que multiplica los datos enviados y recibidos.

Para los que les interese saber algo más, socket.io establece un sistema de websockets, que es un mecanismo de comunicación bidireccional por eventos. En este caso, la negociación se produce al principio (momento de la conexión inicial), donde se intercambian cabeceras y claves; si la operación concluyó con éxito, se produce un canal de transporte de datos; el socket envía heartbeats opcionalmente cada cierto tiempo para comprobar el estado del servidor y está en escucha para eventos. La comunicación se produce inicialmente por parte del cliente. Los datos se escriben a sockets, tanto al socket actual, como a un conjunto (rooms) o a todos los sockets existentes mediante broadcast.

El script lo escribí en 20 minutos así que si hay algún error, está en preaviso.



Eliminé el link porque inyectaron código y redirigía a una web maliciosa, pero subí el código por si a alguien le interesa probarlo.


Son dos bucles, el primero envía por POST datos al servidor y los recibe, a la recepción de la respuesta con number 99, se calcula el tiempo, se inicia otro bucle que emite los mismos datos, y al evento de recepción con number 99 se calcula el tiempo. Se muestran los resultados.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 02/09/2012 a las 03:19

Etiquetas: ajax, funcion, js, php, socket-io
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 02:57.