HTTP și WebSocket sunt ambele protocoale de comunicare utilizate în comunicarea client-server.
Protocolul HTTP: HTTP este unidirecțional unde clientul trimite cererea și serverul trimite răspunsul. Să luăm un exemplu când un utilizator trimite o cerere către server această solicitare merge sub formă de HTTP sau HTTPS, după primirea unui server de solicitare trimite răspunsul către client, fiecare cerere este asociată cu un răspuns corespunzător, după trimiterea răspunsului conexiunea se închide, fiecare solicitare HTTP sau HTTPS stabilește noua conexiune la server de fiecare dată și după primirea răspunsului, conexiunea este întreruptă de la sine.
HTTP este un protocol fără stat care rulează peste TCP, care este un protocol orientat spre conexiune, care garantează livrarea transferului de pachete de date folosind metodele de handshaking în trei căi și retransmite pachetele pierdute.
HTTP poate rula pe deasupra oricărui protocol de încredere orientat spre conexiune, cum ar fi TCP, SCTP. Când un client trimite o solicitare HTTP către server, o conexiune TCP este deschisă între client și server și, după primirea răspunsului, conexiunea TCP se încheie, fiecare cerere HTTP deschide o conexiune TCP separată la server, de ex. dacă clientul trimite 10 solicitări către server, se vor deschide cele 10 conexiuni TCP separate. și închideți-vă după ce obțineți răspunsul/fallback.
Informații despre mesajele HTTP codificate în ASCII, fiecare mesaj de solicitare HTTP compus din versiunea protocolului HTTP (HTTP/1.1, HTTP/2), metode HTTP (GET/POST etc.), anteturi HTTP (tipul conținutului, lungimea conținutului), informații despre gazdă etc. . și corpul care conține mesajul real care este transferat pe server. Antetele HTTP au variat de la 200 de octeți la 2 KB, dimensiunea comună a antetului HTTP este de 700-800 de octeți. Când o aplicație web utilizează mai multe module cookie și alte instrumente la nivelul clientului care extind caracteristicile de stocare ale agentului, aceasta reduce sarcina utilă a antetului HTTP.

WebSocket: WebSocket este bidirecțional, un protocol full-duplex care este utilizat în același scenariu de comunicare client-server, spre deosebire de HTTP, începe de la ws:// sau wss:// . Este un protocol cu stare, ceea ce înseamnă că conexiunea dintre client și server va menține vie până când va fi terminată de oricare dintre părți (client sau server). După închiderea conexiunii de către client și server, conexiunea este încheiată de la ambele capete.
convertiți un int într-un șir de caractere java
Să luăm un exemplu de comunicare client-server, există clientul care este un browser web și un server, ori de câte ori inițiem conexiunea între client și server, client-server a făcut strângerea de mână și decide să creeze o nouă conexiune și această conexiune va rămâne în viață până când va fi reziliat de oricare dintre ei. Când conexiunea este stabilită și vie, comunicarea are loc folosind același canal de conexiune până când este terminată.
Așa se face că, după acordarea de mână client-server, client-server decide asupra unei noi conexiuni pentru a o menține în viață, această nouă conexiune va fi cunoscută sub numele de WebSocket. Odată ce stabilirea legăturii de comunicație și conexiunea sunt deschise, schimbul de mesaje va avea loc în mod bidirecțional până când conexiunea persistă între client-server. Dacă cineva dintre ei (client-server) moare sau decide să închidă conexiunea este închisă de ambele părți. Modul în care funcționează socket-ul este ușor diferit de modul în care funcționează HTTP, codul de stare 101 denotă protocolul de comutare în WebSocket.

Când poate fi utilizat un socket web:
- Aplicație web în timp real: aplicația web în timp real folosește un socket web pentru a afișa datele la capătul clientului, care sunt trimise continuu de serverul backend. În WebSocket, datele sunt împinse/transmise continuu în aceeași conexiune care este deja deschisă, de aceea WebSocket este mai rapid și îmbunătățește performanța aplicației.
Pentru ex. într-un site web de tranzacționare sau tranzacționare cu bitcoin, pentru afișarea fluctuației prețului și a datelor de mișcare sunt împinse în mod continuu de către serverul de backend la capătul clientului prin utilizarea unui canal WebSocket.
Aplicație de jocuri: într-o aplicație de jocuri, s-ar putea să vă concentrați pe asta, datele sunt primite în mod continuu de către server și, fără a reîmprospăta interfața de utilizare, va avea efect pe ecran, interfața de utilizator este reîmprospătată automat fără a stabili o nouă conexiune, așa că este foarte util într-o aplicație de jocuri.
Aplicație de chat: aplicațiile de chat folosesc WebSockets pentru a stabili conexiunea o singură dată pentru schimbul, publicarea și difuzarea mesajului între abonați. Reutiliza aceeași conexiune WebSocket, pentru trimiterea și primirea mesajului și pentru transferul de mesaje unu-la-unu.
Când să nu utilizați WebSocket: WebSocket poate fi utilizat dacă dorim orice fluxuri de date actualizate sau continue în timp real care sunt transmise prin rețea. Dacă vrem să obținem date vechi sau dorim să obținem datele o singură dată pentru a le procesa cu o aplicație, ar trebui să mergem Protocolul HTTP , datele vechi care nu sunt solicitate foarte frecvent sau preluate o singură dată pot fi interogate prin simpla solicitare HTTP, așa că în acest scenariu, este mai bine să nu utilizați WebSocket.
Notă: Serviciile web RESTful sunt suficiente pentru a obține datele de pe server dacă încărcăm datele o singură dată.
Diferențele dintre HTTP și WebSocket Connection:
| Conexiune WebSocket | Conexiune HTTP |
|---|---|
| WebSocket este un protocol de comunicare bidirecțional care poate trimite datele de la client la server sau de la server la client prin reutilizarea canalului de conexiune stabilit. Conexiunea este menținută vie până când este terminată fie de client, fie de server. | Protocolul HTTP este un protocol unidirecțional care funcționează pe deasupra protocolului TCP, care este un protocol de nivel de transport orientat spre conexiune, putem crea conexiunea utilizând metode de solicitare HTTP după ce conexiunea HTTP de răspuns se închide. |
| Aproape toate aplicațiile în timp real, cum ar fi serviciile (trading, monitoring, notification) folosesc WebSocket pentru a primi datele pe un singur canal de comunicare. | Aplicația simplă RESTful folosește protocolul HTTP care este apatrid. |
| Toate aplicațiile actualizate frecvent au folosit WebSocket, deoarece este mai rapid decât HTTP Connection. | Când nu dorim să păstrăm o conexiune pentru o anumită perioadă de timp sau să reutilizam conexiunea pentru transmiterea datelor; O conexiune HTTP este mai lentă decât WebSockets. |
Notă: În funcție de proiectul tău, trebuie să alegi unde va fi WebSocket sau HTTP Connection.