Webhooks ו-WebSockets הן שתי טכנולוגיות פיתוח אתרים שאנשים מבלבלים לעתים קרובות. יישומי אינטרנט מודרניים רבים עושים שימוש גם ב-Webhooks וגם ב-WebSockets. למרות שהם שונים למדי, Webhooks ו-WebSockets מטפלים שניהם בתקשורת ביישומי אינטרנט.
אז מה הם Webhooks ו-WebSockets? מהם הדברים שמבדילים אותם?
מה הם Webhooks ואיך הם עובדים?
אתה יכול לחשוב על Webhook כעל "בקשת HTTP המופעלת על ידי אירוע". מה זה אומר? Webhook הוא פעולת התקשרות חוזרת של HTTP המופעלת בדרך כלל על ידי אירוע בשרת. זה לא הכל, זה בדרך כלל שולח נתונים דרך כתובת URL מוגדרת מראש לשרת אחר. זה מוליד את הרעיון של Webhooks להיות אמצעי תקשורת "שרת לשרת".
כדי להבין טוב יותר את מנגנון העבודה של Webhooks, שקול יישום אינטרנט המשתמש ב-API של Stripe לקבלת תשלומים. בכל פעם שלקוח מבצע תשלום, Stripe מקבל את הכסף, אבל לאפליקציה שלך אין מושג. כאן נכנסים לתמונה 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?
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 עשויות להיות יקרות. ודא שאתה משתמש בהם רק כאשר יש צורך.