Webhooks un WebSockets: kā tie atšķiras?

Webhooks un WebSockets: kā tie atšķiras?

Webhooks un WebSockets ir divas tīmekļa izstrādes tehnoloģijas, kuras cilvēki bieži sajauc. Daudzas mūsdienu tīmekļa lietojumprogrammas izmanto gan Webhooks, gan WebSockets. Lai gan Webhooks un WebSockets ir diezgan atšķirīgi, tie risina saziņu tīmekļa lietojumprogrammās.





Tātad, kas ir Webhooks un WebSockets? Ar ko tās atšķiras?





Kas ir tīmekļa aizķeres un kā tās darbojas?

Tīmekļa aizķeri var uzskatīt par “notikuma aktivizētu HTTP pieprasījumu”. Ko tas nozīmē? Tīmekļa aizķere ir HTTP atzvanīšanas darbība, ko parasti aktivizē notikums serverī. Tas vēl nav viss, tas parasti nosūta datus citam serverim, izmantojot iepriekš konfigurētu URL. Tas rada ideju par Webhooks kā 'servera-servera' saziņas līdzekli.





Lai labāk izprastu Webhooks darbības mehānismu, apsveriet tīmekļa lietojumprogrammu, kas maksājumu saņemšanai izmanto Stripe API. Ikreiz, kad klients veic maksājumu, Stripe saņem naudu, taču jūsu lietotnei nav ne jausmas. Šeit tiek izmantotas tīmekļa aizķeres. Apsveriet tālāk redzamo attēlu:

  Webhooks darbības vizualizācija

Stripe pieprasa norādīt Webhook galapunkta URL, lai nosūtītu klienta maksājumu datus uz jūsu serveri, kad tiek aktivizēts jauns maksājuma notikums. Pēc tam jūsu serveris saņem datus, veic ar tiem darbības un saglabā pastāvīgos datus datu bāzē.



Kas ir WebSockets un kā tās darbojas?

WebSocket ir protokols, ko parasti izmantojat ar JavaScript . Tas izveido divvirzienu, pastāvīgu, divvirzienu sakaru kanālu. Tas tiek darīts vienā savienojums starp diviem TCP portiem no klienta (pārlūka) uz serveri. Populārākā WebSockets lietojumprogramma ir tērzēšanas lietojumprogrammās, piemēram, WhatsApp.

Lai gan tīmekļa aizķeres ir balstītas uz HTTP (t.i., tiek izmantots HTTP protokols), WebSocket ir viss protokols, kura pamatā ir TCP, tāpat kā HTTP. WebSockets var būt ļoti izdevīgs, strādājot ar zema latentuma servera-klienta datu straumēšanas lietojumprogrammām.





Jūs varat sasniegt zemu latentumu, izmantojot WebSocket savienojumu, jo tas paliek atvērts starp darījumiem, atšķirībā no noklusējuma HTTP. Tas ļauj nemanāmi plūst datiem starp abām pusēm.

  websockets vizualizācija

Pirms WebSockets izstrādātāji izmantoja dažādas metodes reāllaika datu iegūšanai, izmantojot HTTP. Lai gan viņi pastāv jau kādu laiku, viņi cieš no ierobežojumiem.





Piemēram, ilgstošai aptaujai klientam vienmēr ir jānosūta serverim jauns pieprasījums noteiktā laika intervālā. Tas nozīmē, ka tad, kad serverī ir jauni dati, tas tos atgriež. Bet, ja tā nav, pieprasījums tiek faktiski izšķiests.

īsinājumtaustiņi miega režīmā Windows 10

Atšķirībā no Webhooks, katrs WebSocket savienojuma gals var nosūtīt datus uz otru. Tas ir viens no iemesliem, kāpēc WebSockets piedāvā milzīgas ātruma priekšrocības, it īpaši, ja dati tiek sūtīti no servera uz klientu. Lietojumprogrammām, kas izmanto WebSockets, vajadzētu gūt labumu no zema latentuma, ienesot datus no servera.

Varat izmantot arī WebSockets, izmantojot TLS, tāpat kā HTTP. Tas aizsargā jūsu pārsūtītos datus, palīdzot mazināt vīrieša uzbrukumi . Izmantojot šo pieeju, pat pastāvīgs savienojums saglabāsies drošs. Jums nebūs jāuztraucas par to, ka uzbrucēji nozags datus vai tos sabojās saziņa.

Kad jums vajadzētu izmantot tīmekļa aizķeres?

Webhooks un WebSockets mērķis ir ieviest labākus līdzekļus reāllaika saziņai tīmeklī. Tomēr viņi to dara pilnīgi dažādos veidos. Bieži vien var būt grūti izlemt, kura no šīm divām tehnoloģijām būtu jāizmanto savā lietojumprogrammā. Jums rūpīgi jāpievērš uzmanība viņu stiprajām un vājajām pusēm, lai redzētu, kas vislabāk atbilst jūsu prasībām.

Tātad, kad izvēlēties Webhooks, nevis WebSockets?

  • Lietojot API, kas jums nepieder. Apsveriet Stripe piemēru no iepriekšējās Webhook ilustrācijas. Stripe ir maksājumu pakalpojumu sniedzējs, un jūsu lietojumprogramma var balstīties tikai uz viņu API. Jūs nevarat kontrolēt Stripe, tāpēc jūs nevarat izveidot WebSocket serveri viņu galā. Šādos gadījumos jums vajadzētu izmantot Webhooks.
  • Ja jūsu lietotne ir serveris, kuram ir jāsazinās ar citu serveri, vislabāk ir izmantot Webhooks. Šī ir ideāla 'servera-servera' sakaru sistēma.
  • Tīmekļa aizķeri nav divvirzienu vai pastāvīgi. Izmantojiet Webhooks tikai tad, ja jūsu lietojumprogramma negaida atbildes datus tajā pašā kanālā.
  • Jāatzīmē arī tas, ka Webhooks ir ideāls veids, kā izmantot servera darbības, kas darbojas kā bezservera funkcijas. Piemēri ietver AWS Lambda un Google mākoņa funkcijas.

Varat eksperimentēt, izmantojot Webhooks webhook.site . Šajā vietnē varat redzēt, kā izskatīsies dati, ko tīmekļa aizķere nosūta uz jūsu lietojumprogrammu. Ir ļoti noderīgi izprast Web aizķeres saziņas būtību, pirms mēģināt ieviest galapunktu savā lietojumprogrammā.

Kad jums vajadzētu izmantot WebSockets?

Reāllaika lietojumprogrammas, paziņojumu sistēmas un reāllaika datu koplietošanas sistēmas ir dažas izplatītas WebSockets lietojumprogrammas. Paturot prātā, ka, izmantojot WebSockets, savienojuma kanālam vienmēr ir jābūt atvērtam, šis protokols ir jāizmanto tikai tad, ja izmaksas ir tā vērtas.

  • Izmantojiet WebSockets, kad jūsu lietojumprogramma nepārtraukti apmainās ar datiem starp klientu un serveri. Piemēram, tiešraidē atrašanās vietas koplietošanas lietojumprogrammā lietotāja atrašanās vieta tiek nepārtraukti atjaunināta gan serverī, gan klientā, kad viņi pārvietojas. WebSockets to padara iespējamu.
  • Multivides saziņas lietojumprogrammās, piemēram, WhatsApp, WebSocket ir ideāls saziņas protokols. Tas nodrošina ļoti ātru divvirzienu datu apmaiņu, kas ir galvenā šāda veida lietotnēm.
  • WebSockets jāizmanto arī lietojumprogrammās, kas ievieš reāllaika plūsmas, piemēram, Livescore. Šajā vietnē tiek kopīgoti tiešraides futbola spēļu atjauninājumi, kad tie notiek reāllaikā. Taču tas tiek darīts bez nepieciešamības veikt jaunus pieprasījumus vai atsvaidzināt pārlūkprogrammu.
  • Citi gadījumi, kad jums vajadzētu izmantot WebSockets, ietver tiešraides video/audio straumēšanas lietotnes, tiešraides paziņojumu sistēmas un reāllaika vairāku spēlētāju spēles. Tie ir noderīgi arī kopīgās rediģēšanas lietojumprogrammās, piemēram, Google dokumenti, Notion utt.

Webhooks un WebSockets ir atšķirīgi

Ir skaidrs, ka, lai gan Webhooks un WebSockets atrisina līdzīgas problēmas, tie nav vienādi, un katram ir savi lietošanas gadījumi. Tīmekļa aizķeres ir vienvirziena, notikumu izraisīti atzvani, kuru pamatā ir HTTP protokols. WebSocket tehnoloģija ir atsevišķs protokols, kas ļauj veikt divvirzienu datu apmaiņu bez pieprasījumiem.

Veidojot lietojumprogrammu, ir svarīgi vienmēr noteikt savu vajadzību, lai izvairītos no resursu izšķērdēšanas. Dažos gadījumos jums vajadzētu dot priekšroku Webhooks, jo WebSockets dažreiz var būt dārgi. Izmantojiet tos tikai nepieciešamības gadījumā.