HTTP i WebSocket són protocols de comunicació utilitzats en la comunicació client-servidor.
Protocol HTTP: HTTP és unidireccional on el client envia la sol·licitud i el servidor envia la resposta. Posem un exemple quan un usuari envia una sol·licitud al servidor aquesta sol·licitud passa en forma d'HTTP o HTTPS, després de rebre un servidor de peticions envia la resposta al client, cada petició s'associa amb una resposta corresponent, després d'enviar la resposta el es tanca la connexió, cada sol·licitud HTTP o HTTPS estableix la nova connexió al servidor cada vegada i després d'obtenir la resposta, la connexió s'acaba per si mateixa.
HTTP és un protocol sense estat que s'executa a sobre de TCP, que és un protocol orientat a la connexió que garanteix el lliurament de la transferència de paquets de dades mitjançant els mètodes d'enllaç de tres vies i torna a transmetre els paquets perduts.
HTTP es pot executar a sobre de qualsevol protocol fiable orientat a la connexió, com ara TCP, SCTP. Quan un client envia una sol·licitud HTTP al servidor, s'obre una connexió TCP entre el client i el servidor i, després d'obtenir la resposta, la connexió TCP s'acaba, cada sol·licitud HTTP obre una connexió TCP separada al servidor, per exemple. si el client envia 10 peticions al servidor, s'obriran 10 connexions TCP separades. i tancar-se després d'obtenir la resposta/repès.
Informació del missatge HTTP codificada en ASCII, cada missatge de sol·licitud HTTP compost per la versió del protocol HTTP (HTTP/1.1, HTTP/2), mètodes HTTP (GET/POST, etc.), capçaleres HTTP (tipus de contingut, longitud de contingut), informació de l'amfitrió, etc. . i el cos que conté el missatge real que s'està transferint al servidor. Les capçaleres HTTP variaven de 200 bytes a 2 KB de mida, la mida habitual de la capçalera HTTP és de 700-800 bytes. Quan una aplicació web utilitza més galetes i altres eines al costat del client que amplien les funcions d'emmagatzematge de l'agent, redueix la càrrega útil de la capçalera HTTP.

WebSocket: WebSocket és bidireccional, un protocol dúplex complet que s'utilitza en el mateix escenari de comunicació client-servidor, a diferència d'HTTP, comença des de ws:// o wss:// . És un protocol amb estat, el que significa que la connexió entre el client i el servidor es mantindrà viva fins que qualsevol de les parts (client o servidor) la finalitzi. Després de tancar la connexió per part del client i del servidor, la connexió s'acaba des dels dos extrems.
igualtat d'objectes java
Posem un exemple de comunicació client-servidor, hi ha el client que és un navegador web i un servidor, sempre que iniciem la connexió entre client i servidor, el client-servidor fa l'enllaç i decideix crear una nova connexió i aquesta connexió. es mantindrà amb vida fins que qualsevol d'ells la cancel·li. Quan la connexió s'estableix i està viva, la comunicació es fa mitjançant el mateix canal de connexió fins que s'acaba.
Així és com després de l'enllaç client-servidor, el client-servidor decideix una nova connexió per mantenir-la viva, aquesta nova connexió es coneixerà com a WebSocket. Un cop oberts l'establiment de l'enllaç de comunicació i la connexió, l'intercanvi de missatges es durà a terme en mode bidireccional fins que la connexió persisteixi entre client-servidor. Si algú d'ells (client-servidor) mor o decideix tancar la connexió es tanca per tots dos. La manera com funciona el sòcol és lleugerament diferent de com funciona HTTP, el codi d'estat 101 indica el protocol de commutació a WebSocket.

Quan es pot utilitzar un endoll web:
- Aplicació web en temps real: l'aplicació web en temps real utilitza un sòcol web per mostrar les dades a l'extrem del client, que el servidor backend envia contínuament. A WebSocket, les dades s'envien/transmeten contínuament a la mateixa connexió que ja està oberta, per això WebSocket és més ràpid i millora el rendiment de l'aplicació.
Per ex. en un lloc web de negociació o comerç de bitcoins, per mostrar la fluctuació del preu i les dades de moviment són contínuament empès pel servidor de fons a l'extrem del client mitjançant un canal WebSocket.
Aplicació de jocs: en una aplicació de jocs, podeu centrar-vos en això, el servidor rep dades contínuament i, sense actualitzar la interfície d'usuari, tindrà efecte a la pantalla, la interfície d'usuari s'actualitza automàticament sense ni tan sols establir la nova connexió, de manera que és molt útil en una aplicació de jocs.
Aplicació de xat: les aplicacions de xat utilitzen WebSockets per establir la connexió només una vegada per a l'intercanvi, la publicació i la difusió del missatge entre els subscriptors. Reutilitza la mateixa connexió WebSocket, per enviar i rebre el missatge i per a la transferència de missatges un a un.
Quan no s'ha d'utilitzar WebSocket: WebSocket es pot utilitzar si volem qualsevol flux de dades actualitzat o continu en temps real que es transmet per la xarxa. Si volem obtenir dades antigues, o volem obtenir les dades només una vegada per processar-les amb una aplicació, hauríem d'anar-hi Protocol HTTP , les dades antigues que no es requereixen amb molta freqüència o que només s'obtenen una vegada es poden consultar mitjançant la simple sol·licitud HTTP, de manera que en aquest escenari, és millor no utilitzar WebSocket.
Nota: Els serveis web RESTful són suficients per obtenir les dades del servidor si estem carregant les dades només una vegada.
Diferències entre la connexió HTTP i WebSocket:
| Connexió WebSocket | Connexió HTTP |
|---|---|
| WebSocket és un protocol de comunicació bidireccional que pot enviar les dades del client al servidor o del servidor al client reutilitzant el canal de connexió establert. La connexió es manté activa fins que el client o el servidor la finalitzi. | El protocol HTTP és un protocol unidireccional que funciona a la part superior del protocol TCP, que és un protocol de capa de transport orientat a la connexió, podem crear la connexió mitjançant mètodes de sol·licitud HTTP després d'aconseguir que la connexió HTTP de resposta es tanqui. |
| Gairebé totes les aplicacions en temps real com els serveis (comerç, seguiment, notificació) utilitzen WebSocket per rebre les dades en un sol canal de comunicació. | L'aplicació RESTful senzilla utilitza el protocol HTTP que és sense estat. |
| Totes les aplicacions actualitzades amb freqüència utilitzaven WebSocket perquè és més ràpid que la connexió HTTP. | Quan no volem retenir una connexió durant un període de temps determinat o reutilitzar la connexió per transmetre dades; Una connexió HTTP és més lenta que WebSockets. |
Nota: Depenent del vostre projecte heu de triar on serà WebSocket o connexió HTTP.