WebSockets מול Server-Sent Events: מתי לבחור כל טכנולוגיה בזמן אמת
מאת צוות מדיה דיל · 30.08.2026 · טכנולוגיה · 6 דק׳
שתי הטכנולוגיות המובילות לתקשורת בזמן אמת בין שרת ללקוח — WebSockets ו-SSE — מתאימות למקרים שונים. הנה איך מחליטים נכון.
HTTP רגיל בנוי על מודל בקשה-תגובה: הלקוח שואל, השרת עונה, והחיבור נסגר. אבל צ''אט חי, התראות בזמן אמת, או עדכון מחיר מניה שמתעדכן לבד — כל אלה דורשים שהשרת יוכל "לדחוף" מידע ללקוח בלי שהוא ביקש מחדש בכל פעם. WebSockets ו-SSE הן שתי הדרכים המובילות לזה.
WebSockets: ערוץ דו-כיווני מלא
WebSocket פותח חיבור יחיד שנשאר פתוח, ומאפשר לשני הצדדים — שרת ולקוח — לשלוח הודעות בכל כיוון בכל רגע, בלי לפתוח בקשה חדשה. זה בדיוק מה שצ''אט חי צריך: המשתמש שולח הודעה, והשרת דוחף הודעות ממשתמשים אחרים חזרה, על אותו חיבור בדיוק.
Server-Sent Events: זרם חד-כיווני פשוט
SSE מאפשר לשרת לדחוף עדכונים ללקוח על חיבור HTTP רגיל שנשאר פתוח, אבל רק בכיוון אחד — מהשרת ללקוח. הלקוח לא יכול לשלוח הודעות באותו ערוץ; אם הוא צריך לשלוח משהו, הוא עושה זאת בבקשת HTTP רגילה נפרדת.
מתי SSE עדיף על WebSockets
עבור מקרים כמו התראות, עדכוני מחיר, או פיד חדשות שזורם רק מהשרת ללקוח, SSE פשוט משמעותית: הוא רץ מעל HTTP רגיל, כך שהוא עובד מאחורי כל Proxy ו-Load Balancer קיים בלי הגדרות מיוחדות, ומתחדש אוטומטית אם החיבור נופל, בלי קוד נוסף מהמפתח.
מתי WebSockets הכרחי
כשהלקוח צריך גם לשלוח וגם לקבל עדכונים בזמן אמת על אותו ערוץ — צ''אט, משחק רב-משתתפים, שיתוף עריכה חי — WebSockets היא הבחירה הנכונה כי הוא היחיד מהשניים שתומך בתקשורת דו-כיוונית אמיתית על אותו חיבור.
מורכבות תשתית: המחיר של WebSockets
חיבורי WebSocket דורשים תשתית שיודעת לנהל חיבורים ארוכי טווח בקנה מידה — Load Balancer עם תמיכה מתאימה, וניהול זיכרון של אלפי חיבורים פתוחים בו-זמנית. SSE, בזכות ריצה מעל HTTP רגיל, נהנה כמעט בחינם מכל התשתית הקיימת שכבר מנהלת בקשות HTTP.
Polling: האלטרנטיבה הפשוטה שלרוב לא מספיקה
לפני שקופצים ל-WebSockets או SSE, שווה לזכור שיש גם Polling פשוט — הלקוח שואל שוב ושוב בכל כמה שניות. פתרון קל להטמעה אבל לא יעיל: עומס מיותר על השרת גם כשאין עדכון, ועיכוב תמידי בין העדכון בפועל להופעתו אצל הלקוח.
שילוב בפועל
מערכות רבות משתמשות ב-SSE לרוב הזרמים החד-כיווניים (התראות, עדכוני סטטוס), ושומרות WebSockets רק לפיצ''רים שבאמת דורשים תקשורת דו-כיוונית — בדיוק אותו עיקרון של "הכלי הנכון למשימה" שחוזר גם בהחלטה בין Serverless ל-Kubernetes.
התנהגות מול חומות אש וגורמי רשת
מכיוון ש-SSE רץ מעל HTTP רגיל, הוא כמעט תמיד עובר בלי בעיה דרך Proxy ארגוני, חומת אש, או CDN, בלי הגדרה מיוחדת. חיבורי WebSocket, לעומת זאת, לפעמים נחסמים או מנותקים על ידי תשתיות רשת ארגוניות שלא מוגדרות לתמוך בפרוטוקול — שיקול מעשי חשוב כשהיעד הוא משתמשי ארגונים גדולים.
ניהול חיבורים מרובים בצד הלקוח
הדפדפן מגביל את מספר חיבורי SSE הפתוחים בו-זמנית לאותו דומיין — מגבלה שכדאי לזכור אם מתכננים כמה זרמי עדכון נפרדים באותו עמוד. WebSocket לא סובל ממגבלה דומה, ומאפשר לרוב לנהל ערוץ אחד שמשרת כמה סוגי עדכונים יחד.
Scaling אופקי לחיבורים ארוכי טווח
כשמספר החיבורים הפתוחים גדל, גם WebSocket וגם SSE דורשים תכנון scaling מיוחד — אם שרת A מחזיק את החיבור הפתוח של משתמש מסוים, שרת B לא יכול לדחוף לו הודעה בלי מנגנון תיאום בין השרתים, לרוב דרך Redis Pub/Sub או פתרון דומה.
בונים פיצ''ר בזמן אמת ולא בטוחים באיזו טכנולוגיה לבחור? מוזמנים לפתוח שיחה בוואטסאפ.
תגיות: WebSockets · Server-Sent Events · Real-Time · תקשורת בזמן אמת