Webhooks i WebSockets dvije su tehnologije web razvoja koje ljudi često brkaju. Mnoge moderne web aplikacije koriste i Webhooks i WebSockets. Iako prilično različiti, Webhooks i WebSockets se bave komunikacijom u web aplikacijama.

Dakle, što su Webhookovi i WebSockets? Koje su stvari koje ih čine drugačijima?

Što su Webhookovi i kako rade?

Webhook možete zamisliti kao "HTTP zahtjev pokrenut događajem". Što to znači? Webhook je radnja HTTP povratnog poziva koju obično pokreće događaj na poslužitelju. To nije sve, obično šalje podatke putem unaprijed konfiguriranog URL-a na drugi poslužitelj. Ovo rađa ideju da Webhooks bude sredstvo komunikacije "od poslužitelja do poslužitelja".

Kako biste bolje razumjeli radni mehanizam Webhooksa, razmislite o web aplikaciji koja koristi Stripeov API za primanje plaćanja. Kad god kupac plati, Stripe prima novac, ali vaša aplikacija nema pojma. Ovdje na scenu stupaju Webhookovi. Razmotrite sliku u nastavku:

Stripe zahtijeva da navedete URL krajnje točke Webhooka za slanje podataka o plaćanju korisnika na vaš poslužitelj kada se pokrene novi događaj plaćanja. Vaš poslužitelj tada prima podatke, izvodi operacije na njima i sprema trajne podatke u bazu podataka.

instagram viewer

Što su WebSockets i kako rade?

WebSocket je protokol koji obično koristite s JavaScriptom. Uspostavlja dvosmjerni, postojani, dvosmjerni komunikacijski kanal. To čini preko jednog veza uspostavljena između dva TCP porta od klijenta (preglednika) do poslužitelja. Najpopularnija aplikacija WebSockets je u aplikacijama za chat kao što je WhatsApp.

Dok se Webhookovi temelje na HTTP-u (tj. koriste HTTP protokol), WebSocket je cijeli protokol temeljen na TCP-u baš kao i HTTP. WebSockets može biti vrlo koristan kada radite na aplikacijama za strujanje podataka između poslužitelja i klijenta niske latencije.

Možete postići nisku latenciju s WebSocket vezom jer ostaje otvorena između transakcija, za razliku od zadanog HTTP-a. To omogućuje nesmetan protok podataka između obje strane.

Prije WebSocketsa, programeri su koristili različite metode dobivanja podataka u stvarnom vremenu putem HTTP-a. Iako postoje već neko vrijeme, pate od ograničenja.

Na primjer, dugo prozivanje zahtijeva od klijenta da uvijek šalje novi zahtjev poslužitelju u određenom vremenskom intervalu. To znači da kada ima novih podataka na poslužitelju, on ih vraća. Ali ako ga nema, zahtjev je zapravo uzalud izgubljen.

Za razliku od Webhooksa, oba kraja WebSocket veze mogu slati podatke drugome. Ovo je jedan od razloga zašto WebSockets nude veliku prednost u brzini, posebno kada se podaci šalju s poslužitelja na klijenta. Aplikacije koje koriste WebSockets trebale bi imati koristi od niske latencije pri dohvaćanju podataka s poslužitelja.

WebSockets možete koristiti i preko TLS-a, baš kao i HTTP. To osigurava podatke koje prenosite i pomaže u ublažavanju napadi čovjeka u sredini. Čak će i trajna veza ostati sigurna uz ovaj pristup. Nećete se morati brinuti da će napadači ukrasti podatke ili da će ih pokvariti komunikacija.

Kada biste trebali koristiti Webhookove?

Webhooks i WebSockets imaju za cilj implementirati bolje načine komunikacije u stvarnom vremenu putem weba. Međutim, oni to čine na potpuno različite načine. Često može biti izazov odlučiti koju od ove dvije tehnologije trebate koristiti u svojoj aplikaciji. Trebali biste obratiti posebnu pozornost na njihove snage i slabosti kako biste vidjeli koji najbolje ispunjava vaše zahtjeve.

Dakle, kada biste trebali odabrati Webhooks umjesto WebSockets?

  • Kada koristite API koji ne posjedujete. Razmotrite primjer Stripea iz prethodne ilustracije Webhooka. Stripe je pružatelj usluga plaćanja i vaša se aplikacija može nadograđivati ​​samo na njihovom API-ju. Nemate kontrolu nad Stripeom, tako da ne možete stvoriti WebSocket poslužitelj na njihovom kraju. U ovakvim slučajevima trebali biste koristiti Webhooks.
  • Ako je vaša aplikacija poslužitelj koji treba komunicirati s drugim poslužiteljem, najbolje je koristiti Webhooks. Ovo je idealan komunikacijski sustav "poslužitelj-poslužitelj".
  • Web-dojavnici nisu dvosmjerni niti postojani. Webhooks biste trebali koristiti samo kada vaša aplikacija ne očekuje podatke o odgovoru preko istog kanala.
  • Također je važno spomenuti da su Webhookovi idealan način za operacije poslužitelja koje se izvode kao funkcije bez poslužitelja. Primjeri uključuju funkcije AWS Lambda i Google Cloud.

Možete eksperimentirati s Webhookovima webhook.site. Ova stranica vam omogućuje da vidite kako će izgledati podaci koje Webhook šalje vašoj aplikaciji. Vrlo je korisno razumjeti prirodu komunikacije Webhooka prije nego što pokušate implementirati krajnju točku u svoju aplikaciju.

Kada biste trebali koristiti WebSockets?

Aplikacije u stvarnom vremenu, sustavi obavijesti i sustavi za dijeljenje podataka uživo neke su od uobičajenih aplikacija WebSockets. Imajući na umu da s WebSockets kanal veze uvijek mora biti otvoren, ovaj protokol treba koristiti samo kada se trošak isplati.

  • Trebali biste koristiti WebSockets kada vaša aplikacija kontinuirano razmjenjuje podatke između klijenta i poslužitelja. Na primjer, u aplikaciji za dijeljenje lokacije uživo, lokacija korisnika kontinuirano se ažurira i na poslužitelju i na klijentu dok se kreću. WebSockets to omogućuju.
  • U multimedijskim komunikacijskim aplikacijama kao što je WhatsApp, WebSocket je idealan komunikacijski protokol. Omogućuje vrlo brzu dvosmjernu razmjenu podataka koja je ključna za ove vrste aplikacija.
  • Također biste trebali koristiti WebSockets u aplikacijama koje implementiraju feedove u stvarnom vremenu kao što je Livescore. Ova web stranica dijeli ažuriranja nogometnih utakmica uživo kako se događaju u stvarnom vremenu. Ali to čini bez potrebe za novim zahtjevima ili bez potrebe da osvježite preglednik.
  • Drugi slučajevi u kojima biste trebali koristiti WebSockets uključuju aplikacije za streaming videa/audija uživo, sustave obavijesti uživo i igre za više igrača u stvarnom vremenu. Također su korisni u aplikacijama za zajedničko uređivanje kao što su Google dokumenti, Notion itd.

Webhookovi i WebSockets su različiti

Jasno je da, iako Webhooks i WebSockets rješavaju slične probleme, oni nisu isti i svaki ima svoje posebne slučajeve upotrebe. Web-dojavnici su jednosmjerni povratni pozivi pokrenuti događajima koji se temelje na HTTP protokolu. WebSocket tehnologija je samostalni protokol koji omogućuje dvosmjernu razmjenu podataka bez zahtjeva.

Važno je uvijek identificirati svoje potrebe prilikom izrade aplikacije kako biste izbjegli rasipanje resursa. U nekim slučajevima trebali biste preferirati Webhooks jer WebSockets ponekad mogu biti previsoki. Pazite da ih koristite samo kada je to potrebno.