
הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Socket.io» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא חדש לגמרי בשם Socket.io. בואו קודם כל נבין מה זה Socket.io. Socket.io זו ספרייה שמאפשרת תקשורת דו-כיוונית בין הדפדפן לבין הסרבר שלנו.
היא בנויה משני חלקים. חלק אחד, יש לה את החלק של הספרייה בסרבר בעזרת Node.js, והחלק השני זה ספרייה של JavaScript שנמצאת בצד הלקוח.
אז בואו נבין רגע מה זה מאפשר לנו. ראשית בואו נזכר מה זה אומר תקשורת HTTP רגילה. יש לנו סרבר כמובן השירות שלנו האתר שלנו לא משנה מה נמצא בסרבר סייד ויש לנו את הקליינט שיש לו דפדפן או כל תוכנה אחרת שהיא קליינט סייד.
אם אנחנו מבססים תקשורת או רוצים לתקשר ביניהם אז ב-HTTP פרוטוקול רגיל תמיד תמיד הקליינט יוזם ריקווסט ואז הסרבר מקבל את הריקווסט.
רק אז הסרבר יודע שמישהו פנה אליו, הוא כמובן יודע איזה קליינט זה, ומחזיר לו ריספונס ואז הקליינט מקבל את הריספונס.
אוקיי, מה הבעיה? אז ברוב הגדול של המקרים אין פה שום בעיה. לקוח רוצה דף של כל המסעדות בתל אביב, אין בעיה, אז הוא עושה ריקווסט לסרבר, הסרבר מוציא את המידע מהדאטאבייס ומחזיר לו ואז הלקוח רואה את כל המסעדות בתל אביב.
מעולה. אבל יש מקרים לוגיים שהדבר הזה לא מספק אותנו. לדוגמה, מה בקשר לכל הנושא של פושט נוטיפיקיישנס?
אם הסרבר עצמו יודע שעכשיו הוא רוצה להגיד משהו ללקוח שיתחבר אליו, איך הוא יכול פתאום ליזום ללקוח הודעה? הוא לא יכול. רק אם הלקוח יזם לו ריקווסט, הוא מחזיר לו ריספונס.
אז בעבר פתרו את הסיטואציה הזאת בכל מיני דרכים. לדוגמה קליינט כל שנייה יוזם ריקווסט ללקוח רק בשביל לשאול: יש לך הודעה חדשה? הסרוור אומר לו: לא. יש לך הודעה חדשה?
לא. יש לך הודעה חדשה? לא. וזה כמובן מעיק על התקשורת ביניהם. ויש עוד כל מיני טכניקות שניסו בשביל לפתור את הסיטואציה. אחת מהן שהיא מאוד מאוד נפוצה היום וכמובן ממומשת ב-Node.js, בין היתר היא Socket.io Communication.
אז מה זה בעצם Socket.io? יש לנו את הסרבר שלנו, יש לנו את הקליינט, וכאשר הקליינט רוצה עכשיו לתקשר בעזרת הטכניקה הזאת של Socket.io, אז הוא יוצר משהו שנקרא Socket.
Socket בתרגום חופשי ושקע. זה בעצם נקודת התקשורת ל-socket שנמצא בצד השני אחד בלבד.
זאת אומרת שאם אני כרגע קליינט ואני מתחבר לסרבר אז ברגע שאני מבסס קו תקשורת אז אני יוצר סוקט ישיבות לסוקט אחר שנמצא בסרבר סייד. סוקט לא מחובר לשני שתי קצוות של קו התקשורת הוא מחובר רק לצד אחד.
אז כל לקוח יש לו סוקט אחד ויש לו את הסוקט שמייצג אותו בצד של השרת אם יהיה לי כמה לקוחות לכל לקוח יהיה את הסוקט שלו וכל הסוקטים האלה מחוברים לסוקט שלהם כל אחד שלהם בצד של השרת אנחנו נראה את זה בשלב מאוחר יותר.
אז כרגע אני מדבר על לקוח אחד יש לי לקוח אחד והוא מתקשר עם השרת ועכשיו אנחנו רוצים להעביר תקשורת. אז ברגע שהקו תקשורת הזה קם ויש לנו ביסוס של קו תקשורת של שני סוקטים עדיין אין פה request ואין פה רספונס.
רק ביססנו קו תקשורת, התחברנו.