Webhooks срещу WebSockets: Как се различават?

Webhooks срещу WebSockets: Как се различават?

Webhooks и WebSockets са две технологии за уеб разработка, които хората често бъркат. Много съвременни уеб приложения използват както Webhooks, така и WebSockets. Въпреки че са доста различни, Webhooks и WebSockets адресират комуникацията в уеб приложенията.



И така, какво са Webhooks и WebSockets? Кои са нещата, които ги правят различни?





Какво представляват уебкукичките и как работят?

Можете да мислите за Webhook като за „задействана от събитие HTTP заявка“. Какво означава това? Webhook е HTTP действие за обратно извикване, обикновено задействано от събитие в сървър. Това не е всичко, обикновено изпраща данни чрез предварително конфигуриран URL адрес към друг сървър. Това ражда идеята Webhooks да бъде средство за комуникация „сървър към сървър“.





За да разберете по-добре работния механизъм на Webhooks, помислете за уеб приложение, което използва API на Stripe за получаване на плащания. Всеки път, когато клиент направи плащане, Stripe получава парите, но вашето приложение няма представа. Това е мястото, където идват Webhooks. Помислете за изображението по-долу:

преобразувайте едно изображение в друго онлайн
  Визуализация на това как работят Webhooks

Stripe изисква да предоставите URL адрес на крайна точка на Webhook, за да изпратите данните за плащане на клиента към вашия сървър, когато се задейства ново събитие за плащане. След това вашият сървър получава данните, извършва операции върху тях и записва постоянни данни в базата данни.



Какво представляват 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 и WebSockets имат за цел да внедрят по-добри средства за комуникация в реално време в мрежата. Те обаче го правят по напълно различни начини. Често може да бъде предизвикателство да решите коя от тези две технологии да използвате във вашето приложение. Трябва да обърнете специално внимание на техните силни и слаби страни, за да видите кой най-добре отговаря на вашите изисквания.

И така, кога трябва да изберете Webhooks пред WebSockets?

  • Когато използвате API, който не притежавате. Помислете за примера на Stripe от по-ранната илюстрация на Webhook. Stripe е доставчик на платежни услуги и вашето приложение може да надгражда само върху техния API. Нямате контрол над Stripe, така че не можете да създадете WebSocket сървър в техния край. В случаи като този трябва да използвате Webhooks.
  • Ако приложението ви е сървър, който трябва да комуникира с друг сървър, най-добре е да използвате Webhooks. Това е идеалната комуникационна система „сървър към сървър“.
  • Webhooks не са двупосочни или постоянни. Трябва да използвате 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 понякога могат да бъдат прекалено високи. Уверете се, че ги използвате само когато е необходимо.