Cuando visita una página web tradicional, cada recurso (imagen, css, archivo javascript, etc.) con el que se encuentra el navegador al procesar el documento crea una nueva solicitud al servidor (ignorando el almacenamiento en caché del navegador) utilizando el protocolo HTTP. Esto incluye las solicitudes realizadas con Javascript y XML HTTP Requests (XHR).
Vale la pena señalar que un “protocolo” es solo una convención. En este caso, una convención para conectar, transmitir, recibir y desconectar. WebSockets usa un protocolo diferente de HTTP, uno que establece una conexión y luego lo mantiene abierto hasta que abandona la página. Es un poco confuso porque WebSockets realmente comienza la comunicación a través de HTTP, pero luego se “actualiza” de forma transparente al protocolo especial de WebSockets. La comunicación a través de esta conexión mejorada no es lo mismo que el HTTP GET / POST / etc de la vieja escuela, es un lenguaje especial que admite la transferencia simultánea de datos en ambas direcciones.
Si piensa en dos personas que tienen una conversación, donde Bob es el navegador y Steve es el servidor, HTTP tradicional sería algo como esto:
Bob le da la mano a Steve y dice: “Hola Steve, tráeme el documento que guardas en index.html”. Steve lo busca, lo entrega y dice “OK”. Bob luego mira el documento y nota que hay 35 cosas más que necesita de Steve. Para cada uno, Bob dice: “Hola Steve, tráeme esto aquí”. Y Steve lo busca y se lo entrega si puede, diciendo: “OK” o “No puedo encontrarlo” si no puede encontrarlo, o tal vez algo peor como “No puedo, no puedo”. muriendo “. Pero en ningún momento Steve puede decirle a Bob: “Hola Bob, ¿sigues ahí?” Steve tiene que sentarse y esperar a que Bob le pida algo primero. Y si pasan más de unos segundos antes de que Bob necesite algo más de Steve, tienen que estrechar la mano nuevamente. Hay trucos en los que, después de que Bob pide lo correcto, Steve puede pretender dárselo a Bob muy, muy lentamente, para que pueda seguir hablando con Bob, pero no vamos a entrar en eso.
- ¿Cuáles son algunas recomendaciones para un buen proveedor de servicios de programación de citas?
- ¿Cuál es el mejor editor de texto HTML 2016?
- ¿Qué tan importante es un dominio .com para una aplicación web exitosa dado que todos los buenos nombres se han ido?
- ¿Cuál es la mejor aplicación basada en la web "Getting Things Done"?
- ¿Cómo debe ser la descripción del trabajo para un desarrollador de aplicaciones web en una startup nueva y patentada? ¿Qué habilidades, idiomas y habilidades son necesarias?
Los WebSockets son más como una conversación bidireccional. Bob solicita el documento index.html como antes y obtiene una respuesta similar (la página). Pero luego Bob le pide a Steve otro documento, dándole un guiño astuto y un apretón de manos secreto. Steve sabe qué hacer, también le han enseñado el apretón de manos secreto; Están en buena compañía ahora. Pero esta vez no dejan de darse la mano, simplemente aguantan. Debido a esta conexión especial que han hecho, Steve puede hablar con Bob, y Bob puede hablar con Steve cuando lo deseen. Incluso pueden hablar al mismo tiempo y aún entenderse. Son buenos oyentes. Bob también pide cosas a la antigua usanza, pero ahora tienen una línea de comunicación abierta adicional que no se detiene hasta que uno de ellos dice: “Estoy fuera”.