Webhooks ընդդեմ WebSockets. Ինչպե՞ս են դրանք տարբերվում:
Webhooks-ը և WebSockets-ը երկու տեխնոլոգիաներ են, որոնք կարգավորում են համացանցի միջոցով հաղորդակցությունը: Բայց դրանք շատ տարբեր են և յուրաքանչյուրն անդրադառնում է հատուկ կարիքներին:
Webhooks-ը և WebSockets-ը վեբ զարգացման երկու տեխնոլոգիա են, որոնք մարդիկ հաճախ շփոթում են: Շատ ժամանակակից վեբ հավելվածներ օգտագործում են և՛ Webhooks, և՛ WebSockets: Չնայած բոլորովին տարբեր են, Webhooks-ը և WebSockets-ը երկուսն էլ հասցեագրում են հաղորդակցությունը վեբ հավելվածներում:
Այսպիսով, ինչ են Webhooks-ը և WebSockets-ը: Ինչո՞վ են դրանք տարբերվում:
Ի՞նչ են Webhook-ները և ինչպես են դրանք աշխատում:
Դուք կարող եք պատկերացնել Webhook-ը որպես «իրադարձության գործարկված HTTP հարցում»: Ինչ է սա նշանակում? Webhook-ը HTTP-ի հետ կանչման գործողություն է, որը սովորաբար գործարկվում է սերվերում տեղի ունեցած իրադարձությունից: Սա դեռ ամենը չէ, այն սովորաբար տվյալներ է ուղարկում նախապես կազմաձևված URL-ի միջոցով մեկ այլ սերվեր: Սա ծնում է Webhooks-ը «սերվերից սերվեր» հաղորդակցման միջոց լինելու գաղափարը:
Webhooks-ի աշխատանքի մեխանիզմը ավելի լավ հասկանալու համար դիտարկեք վեբ հավելված, որն օգտագործում է Stripe-ի API-ն վճարումներ ստանալու համար: Ամեն անգամ, երբ հաճախորդը վճարում է կատարում, Stripe-ը ստանում է գումարը, բայց ձեր հավելվածը գաղափար չունի: Այստեղ են հայտնվում Webhooks-ը: Դիտարկենք ստորև ներկայացված պատկերը.
Stripe-ը պահանջում է, որ դուք տրամադրեք Webhook վերջնական կետի URL՝ հաճախորդի վճարային տվյալները ձեր սերվերին ուղարկելու համար, երբ սկսվում է վճարման նոր իրադարձություն: Այնուհետև ձեր սերվերը ստանում է տվյալները, կատարում գործողություններ դրանց վրա և պահպանում է մշտական տվյալները տվյալների բազայում:
Ինչ են WebSockets-ը և ինչպես են նրանք աշխատում:
WebSocket-ը արձանագրություն է, որը սովորաբար կօգտագործեք JavaScript-ի հետ: Այն ստեղծում է երկկողմանի, համառ, երկկողմանի հաղորդակցման ալիք: Դա անում է մեկ կապի միջոցով, որը կատարվում է երկու TCP պորտերի միջև՝ հաճախորդից (բրաուզերից) դեպի սերվեր: WebSockets-ի ամենահայտնի հավելվածը WhatsApp-ի նման չաթի հավելվածներն են:
Թեև Webhooks-ը հիմնված է HTTP-ի վրա (այսինքն՝ օգտվել HTTP արձանագրությունից), WebSocket-ը մի ամբողջ արձանագրություն է ինքնուրույն՝ հիմնված TCP-ի վրա, ինչպես և HTTP-ն: WebSockets-ը կարող է շատ շահավետ լինել, երբ աշխատում է ցածր լատենտ սերվերի-հաճախորդի տվյալների հոսքային հավելվածների վրա:
Դուք կարող եք հասնել ցածր հետաձգման WebSocket կապի միջոցով, քանի որ այն բաց է մնում գործարքների միջև՝ ի տարբերություն լռելյայն HTTP-ի: Սա թույլ է տալիս տվյալների անխափան հոսքը երկու կողմերի միջև:
Մինչ WebSockets-ը, մշակողները օգտագործում էին HTTP-ով իրական ժամանակում տվյալներ ստանալու տարբեր մեթոդներ: Չնայած նրանք վաղուց են եղել, նրանք տառապում են սահմանափակումներից:
Օրինակ, երկար հարցումը պահանջում է, որ հաճախորդը միշտ նոր հարցում ուղարկի սերվերին որոշակի ժամանակային ընդմիջումով: Սա նշանակում է, որ երբ սերվերում նոր տվյալներ կան, այն վերադարձնում է դրանք: Բայց եթե չկա, ապա խնդրանքը փաստորեն վատնվում է:
Ի տարբերություն Webhooks-ի, WebSocket կապի երկու ծայրերը կարող են տվյալներ ուղարկել մյուսին: Սա է պատճառներից մեկը, որ WebSockets-ն առաջարկում է հսկայական արագության առավելություն, հատկապես, երբ տվյալները սերվերից ուղարկվում են հաճախորդին: WebSockets օգտագործող հավելվածները պետք է օգտվեն ցածր ուշացումից՝ սերվերից տվյալներ բեռնելիս:
Դուք կարող եք նաև օգտագործել WebSockets-ը TLS-ի միջոցով, ինչպես և HTTP-ն: Սա պաշտպանում է ձեր փոխանցած տվյալները՝ օգնելով մեղմել մարդու միջին հարձակումները: Այս մոտեցմամբ նույնիսկ մշտական կապը ապահով կմնա: Դուք ստիպված չեք լինի անհանգստանալ, որ հարձակվողները տվյալները գողանում են կամ կապը կփչացնեն դրանք:
Ե՞րբ պետք է օգտագործեք Webhooks-ը:
Webhooks-ը և WebSockets-ը նպատակ ունեն իրական ժամանակում հաղորդակցության ավելի լավ միջոցներ կիրառել համացանցում: Այնուամենայնիվ, նրանք դա անում են բոլորովին այլ ձևերով: Հաճախ դժվար է որոշել, թե այս երկու տեխնոլոգիաներից որն եք օգտագործել ձեր հավելվածում: Դուք պետք է ուշադիր ուշադրություն դարձնեք նրանց ուժեղ և թույլ կողմերին, որպեսզի տեսնեք, թե որն է լավագույնս համապատասխանում ձեր պահանջներին:
Այսպիսով, ե՞րբ պետք է ընտրեք Webhooks-ը WebSockets-ի փոխարեն:
- API-ն օգտագործելիս, որը դուք չունեք: Դիտարկենք Stripe-ի օրինակը Webhook-ի նախկին նկարազարդումից: Stripe-ը վճարային ծառայությունների մատակարար է, և ձեր հավելվածը կարող է հիմնվել միայն իրենց API-ի վրա: Դուք չունեք վերահսկողություն Stripe-ի վրա, այնպես որ չեք կարող ստեղծել WebSocket սերվեր դրանց վերջում: Նման դեպքերում դուք պետք է օգտագործեք Webhooks:
- Եթե ձեր հավելվածը սերվեր է, որը պետք է շփվի մեկ այլ սերվերի հետ, ավելի լավ է օգտագործել Webhooks-ը: Սա իդեալական «սերվերից սերվեր» հաղորդակցման համակարգ է:
- Webhook-ները երկկողմանի կամ մշտական չեն: Դուք պետք է օգտագործեք Webhooks-ը միայն այն դեպքում, երբ ձեր հավելվածը չի ակնկալում պատասխանի տվյալներ նույն ալիքով:
- Հատկանշական է նաև, որ Webhooks-ը իդեալական միջոց է սերվերային գործողությունների համար, որոնք աշխատում են որպես առանց սերվերի գործառույթներ: Օրինակները ներառում են AWS Lambda և Google ամպային գործառույթները:
Դուք կարող եք փորձարկել Webhooks-ը webhook.site-ում: Այս կայքը թույլ է տալիս տեսնել, թե ինչ տեսք կունենան այն տվյալները, որոնք Webhook-ն ուղարկում է ձեր հավելվածին: Շատ օգտակար է հասկանալ Webhook-ի հաղորդակցության բնույթը, նախքան ձեր հավելվածում վերջնական կետ կիրառելը:
Ե՞րբ պետք է օգտագործեք WebSockets-ը:
Իրական ժամանակի հավելվածները, ծանուցման համակարգերը և տվյալների փոխանակման ուղիղ համակարգերը WebSockets-ի որոշ տարածված հավելվածներ են: Նկատի ունենալով, որ WebSockets-ի դեպքում կապի ալիքը միշտ պետք է բաց լինի, այս արձանագրությունը պետք է օգտագործվի միայն այն դեպքում, երբ արժեքը արժե այն:
- Դուք պետք է օգտագործեք WebSockets-ը, երբ ձեր հավելվածը անընդհատ տվյալներ է փոխանակում հաճախորդի և սերվերի միջև: Օրինակ՝ ուղիղ տեղադրության համօգտագործման հավելվածում օգտվողի գտնվելու վայրը շարունակաբար թարմացվում է ինչպես սերվերի, այնպես էլ հաճախորդի վրա, երբ նրանք շարժվում են: WebSockets-ը դա հնարավոր է դարձնում:
- WhatsApp-ի նման մուլտիմեդիա հաղորդակցման հավելվածներում WebSocket-ը իդեալական հաղորդակցման արձանագրություն է: Այն թույլ է տալիս շատ արագ երկկողմանի տվյալների փոխանակում, որն առանցքային է այս տեսակի հավելվածների համար:
- Դուք նաև պետք է օգտագործեք WebSockets հավելվածները, որոնք իրականացնում են իրական ժամանակի հոսքեր, ինչպիսիք են Livescore-ը: Այս կայքը կիսում է կենդանի ֆուտբոլային խաղերի թարմացումները, քանի որ դրանք տեղի են ունենում իրական ժամանակում: Բայց դա անում է առանց նոր հարցումներ կատարելու կամ բրաուզերի թարմացում պահանջելու:
- Այլ դեպքեր, երբ դուք պետք է օգտագործեք WebSockets-ը, ներառում են կենդանի վիդեո/աուդիո հոսքային հավելվածներ, կենդանի ծանուցման համակարգեր և իրական ժամանակում բազմախաղացող խաղեր: Դրանք նաև օգտակար են համատեղ խմբագրման ծրագրերում, ինչպիսիք են Google Docs-ը, Notion-ը և այլն:
Webhooks-ը և WebSockets-ը տարբեր են
Հասկանալի է, որ չնայած Webhooks-ը և WebSockets-ը լուծում են նմանատիպ խնդիրներ, դրանք նույնը չեն, և յուրաքանչյուրն ունի իր հատուկ օգտագործման դեպքերը: Webhooks-ը միակողմանի, իրադարձությունների հետևանքով հետ կանչեր են՝ հիմնված HTTP արձանագրության վրա: WebSocket տեխնոլոգիան ինքնուրույն արձանագրություն է, որը թույլ է տալիս տվյալների երկկողմանի փոխանակում առանց հարցումների:
Կարևոր է միշտ բացահայտել ձեր կարիքը հավելված ստեղծելիս՝ ռեսուրսների վատնումից խուսափելու համար: Որոշ դեպքերում, դուք պետք է նախընտրեք Webhooks-ը, քանի որ WebSockets-ը երբեմն կարող է ծախսատար լինել: Համոզվեք, որ դրանք օգտագործում եք միայն անհրաժեշտության դեպքում: