logo

Mikä on web socket ja miten se eroaa HTTP:stä?

HTTP ja WebSocket ovat molemmat viestintäprotokollia, joita käytetään asiakas-palvelin-viestinnässä.

HTTP-protokolla: HTTP on yksisuuntainen, jossa asiakas lähettää pyynnön ja palvelin lähettää vastauksen. Otetaan esimerkki, kun käyttäjä lähettää pyynnön palvelimelle tämä pyyntö menee HTTP- tai HTTPS-muodossa, saatuaan pyyntöpalvelin lähettää vastauksen asiakkaalle, jokaiseen pyyntöön liittyy vastaava vastaus, vastauksen lähettämisen jälkeen yhteys sulkeutuu, jokainen HTTP- tai HTTPS-pyyntö muodostaa uuden yhteyden palvelimeen joka kerta ja vastauksen saatuaan yhteys katkeaa itsestään.
HTTP on tilaton protokolla, joka toimii TCP:n päällä. Se on yhteyssuuntautunut protokolla, joka takaa datapakettien siirron kolmisuuntaisilla kättelymenetelmillä ja lähettää kadonneet paketit uudelleen.



HTTP voi toimia minkä tahansa luotettavan yhteyspohjaisen protokollan, kuten TCP, SCTP, päällä. Kun asiakas lähettää HTTP-pyynnön palvelimelle, asiakkaan ja palvelimen välillä avautuu TCP-yhteys ja vastauksen saatuaan TCP-yhteys katkeaa, jokainen HTTP-pyyntö avaa erillisen TCP-yhteyden palvelimelle, esim. jos asiakas lähettää 10 pyyntöä palvelimelle, avautuu 10 erillistä TCP-yhteyttä. ja sulkeudu saatuasi vastauksen/varan.

HTTP-viestin tiedot koodattu ASCII-muotoon, jokainen HTTP-pyyntöviesti koostuu HTTP-protokollan versiosta (HTTP/1.1, HTTP/2), HTTP-menetelmistä (GET/POST jne.), HTTP-otsikoista (sisällön tyyppi, sisällön pituus), isäntätiedoista jne. ja runko, joka sisältää varsinaisen palvelimelle siirrettävän viestin. HTTP-otsikoiden koko vaihteli 200 tavusta 2 kilotavuun, yleinen HTTP-otsikon koko on 700-800 tavua. Kun verkkosovellus käyttää enemmän evästeitä ja muita työkaluja asiakaspuolella, jotka laajentavat agentin tallennusominaisuuksia, se vähentää HTTP-otsikon hyötykuormaa.



WebSocket: WebSocket on kaksisuuntainen, full-duplex-protokolla, jota käytetään samassa asiakas-palvelin-viestinnän skenaariossa, toisin kuin HTTP, se alkaa ws:// tai wss:// . Se on tilallinen protokolla, mikä tarkoittaa, että asiakkaan ja palvelimen välinen yhteys säilyy, kunnes jompikumpi osapuoli (asiakas tai palvelin) katkaisee sen. Kun yhteys on katkaistu jommallakummalla asiakkaan ja palvelimen toimesta, yhteys katkeaa molemmista päistä.

ensisijainen avain ja yhdistelmäavain sql:ssä

Otetaan esimerkki asiakas-palvelin-viestinnästä, on asiakas joka on verkkoselain ja palvelin, aina kun aloitamme yhteyden asiakkaan ja palvelimen välillä, asiakas-palvelin teki kättelyn ja päätti luoda uuden yhteyden ja tämän yhteyden säilyy hengissä, kunnes joku niistä päättää. Kun yhteys on muodostettu ja elossa, viestintä tapahtuu käyttäen samaa yhteyskanavaa, kunnes se katkaistaan.

Näin asiakas-palvelin -kättelyn jälkeen asiakas-palvelin päättää uudesta yhteydestä pitääkseen sen hengissä, tämä uusi yhteys tunnetaan nimellä WebSocket. Kun viestintälinkin muodostaminen ja yhteys on avattu, sanomanvaihto tapahtuu kaksisuuntaisessa tilassa, kunnes yhteys jatkuu asiakas-palvelimen välillä. Jos joku heistä (asiakas-palvelin) kuolee tai päättää katkaista yhteyden, molemmat osapuolet sulkevat yhteyden. Socketin toimintatapa poikkeaa hieman HTTP:n toiminnasta, tilakoodi 101 ilmaisee kytkentäprotokollan WebSocketissa.



Milloin verkkoliitäntää voidaan käyttää:

    Reaaliaikainen verkkosovellus: Reaaliaikainen verkkosovellus käyttää verkkoliitäntää datan näyttämiseen asiakaspäässä, jota taustapalvelin lähettää jatkuvasti. WebSocketissa dataa työnnetään/siirretään jatkuvasti samaan jo auki olevaan yhteyteen, minkä vuoksi WebSocket on nopeampi ja parantaa sovelluksen suorituskykyä.
    Esim. kaupankäyntisivustolla tai bitcoin-kaupankäynnissä hintavaihtelu- ja liiketietojen näyttämistä varten taustapalvelin työntää jatkuvasti asiakaspäähän WebSocket-kanavan avulla.
    Pelisovellus: Pelisovelluksessa voit keskittyä siihen, palvelin vastaanottaa tietoja jatkuvasti, ja ilman käyttöliittymän päivittämistä se tulee voimaan näytöllä, käyttöliittymä päivittyy automaattisesti edes muodostamatta uutta yhteyttä, joten se on erittäin hyödyllinen pelisovelluksessa.
    Chat-sovellus: Chat-sovellukset käyttävät WebSocketsia yhteyden muodostamiseen vain kerran viestin vaihtamista, julkaisemista ja lähettämistä varten tilaajien kesken. Se käyttää uudelleen samaa WebSocket-yhteyttä viestin lähettämiseen ja vastaanottamiseen sekä kahdenkeskiseen viestien siirtoon.

Milloin WebSocketia ei saa käyttää: WebSocketia voidaan käyttää, jos haluamme reaaliaikaisesti päivitettyjä tai jatkuvia tietovirtoja, joita lähetetään verkon yli. Jos haluamme noutaa vanhoja tietoja tai haluamme saada tiedot vain kerran käsitelläksemme ne sovelluksella, meidän tulee käyttää sitä HTTP-protokolla , vanhoja tietoja, joita ei vaadita kovin usein tai joita haetaan vain kerran, voidaan kysyä yksinkertaisella HTTP-pyynnöllä, joten tässä skenaariossa on parempi olla käyttämättä WebSocketia.

Huomautus: RESTful-verkkopalvelut riittävät tiedon saamiseen palvelimelta, jos lataamme tiedot vain kerran.

Erot HTTP- ja WebSocket-yhteyden välillä:

WebSocket-yhteys HTTP-yhteys
WebSocket on kaksisuuntainen viestintäprotokolla, joka voi lähettää tiedot asiakkaalta palvelimelle tai palvelimelta asiakkaalle käyttämällä uudelleen muodostettua yhteyskanavaa. Yhteys pidetään yllä, kunnes joko asiakas tai palvelin katkaisee sen. HTTP-protokolla on yksisuuntainen protokolla, joka toimii TCP-protokollan päällä, joka on yhteyskeskeinen kuljetuskerrosprotokolla. Voimme luoda yhteyden HTTP-pyyntömenetelmillä saatuaan vastauksen HTTP-yhteys suljetaan.
Lähes kaikki reaaliaikaiset sovellukset, kuten (kaupankäynti-, valvonta-, ilmoitus)palvelut, käyttävät WebSocketia tiedon vastaanottamiseen yhdellä viestintäkanavalla. Yksinkertainen RESTful-sovellus käyttää HTTP-protokollaa, joka on valtioton.
Kaikki usein päivitetyt sovellukset käyttivät WebSocketia, koska se on nopeampi kuin HTTP-yhteys. Kun emme halua säilyttää yhteyttä tiettyä aikaa tai käyttää sitä uudelleen tiedon lähettämiseen; HTTP-yhteys on hitaampi kuin WebSockets.

Huomautus: Projektistasi riippuen sinun on valittava, missä se on WebSocket tai HTTP-yhteys.