PracticU

שימוש ב-Socket.io בצד לקוח

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › שימוש ב-Socket.io בצד לקוח
מילון מושגים:
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
Localhost - שם המפנה למחשב המקומי עצמו (כתובת 127.0.0.1), המשמש לבדיקת שירותים הרצים על אותו מחשב.

שימוש ב-Socket.io בצד לקוח
בונים את צד הלקוח שמתחבר לשרת Socket.io ששני הצדדים שולחים דרכו הודעות לאירועים בשם קבוע.
השלבים העיקריים
1. הדף: index.html עם כותרת, כפתורי חיבור ושליחת הודעה, וקובץ index.js עם הפונקציות.
2. טעינת הספרייה: תג script שה-src שלו מצביע לקובץ socket.io.js של הספרייה שנמצאת ב-Node.js. משם מגיע המשתנה io.
3. חיבור: socket = io.connect(...). אפשר להעביר כתובת שרת כמו localhost:3000, ואם הלקוח מוגש מאותה כתובת אפשר בלי. מגדירים את socket במשתנה גלובלי עם let ומעבירים את החיבור לפונקציה connect שמופעלת מכפתור.
4. שליחה לשרת: socket.emit עם שם האירוע שהשרת מאזין לו, והמידע, למשל hello from the client.
5. בדיקה: מחברים לקוח אחד ורואים בשרת הודעה על התחברות ו-total clients 1. אחרי חיבור לקוח שני ההודעה מראה 2, ושני הלקוחות יכולים לשלוח הודעות. ניתוק מעדכן את המספר בשרת.
6. שליחה מהשרת ללקוח: בשרת קוראים ל-socket.emit עם שם אירוע (message from server) והודעה. בדוגמה נשלחה שלוש פעמים כדי להראות שאפשר לשלוח כמה פעמים, ואחר כך הצטמצמה להודעה אחת.
7. קבלה בלקוח: בלקוח קוראים ל-socket.on עם אותו שם אירוע, ובפונקציה מקבלים את ההודעה ומוסיפים אותה לדף, כל הודעה ב-div.
8. בדיקה עם כמה לקוחות: ההודעה חוזרת רק ללקוח ששלח אותה, לא לשאר.
שימו לב
- ב-let ולא ב-const מגדירים את המשתנה socket, כי הערך מוצב בו אחרי היצירה, ובשלב הראשון זה גרם לשגיאה.
- בכל emit ו-on חייבים לציין את שם האירוע, ושני הצדדים חייבים להשתמש באותה מחרוזת.
עכשיו אפשר לשלוח הודעות בשני הכיוונים בין לקוח לשרת, וההרצאה הבאה הופכת את זה לצ'אט.
השיעור הבא בקורס: בניית צ'אט באתר

פרקי ההרצאה: שימוש ב-Socket.io בצד לקוח

  1. 00:00

    דף הלקוח ולחצן שליחת הודעה

  2. 00:44

    התחברות לשרת עם io.connect

  3. 01:24

    טעינת הספרייה socket.io.js

  4. 02:10

    לחצן Connect נפרד

  5. 02:54

    שליחת הודעה עם emit

  6. 03:50

    בדיקה ותיקון שגיאת const

תמלול ההרצאה: שימוש ב-Socket.io בצד לקוח

הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Socket.io בצד לקוח» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    כעת בואו נבנה את צד הלקוח אז אנחנו מוסיפים אינדקס html בואו נבנה כאן את האינדקס ויש לנו כאן כותרת socket.io בואו נבנה פה איזשהו לחצן send message ויש לנו כאן onclick send message פונקציה שאנחנו רוצים לכתוב בקובץ javascript נצרף index.js נבנה את הפונקציה send message בואו נראה מה אנחנו צריכים בשביל להתחבר עם

  2. 00:41

    צד הקליינט. אז ראשית אנחנו לוקחים כאן באזור הגלובלי socket שווה io.connect זה בעצם הפונקציה שמבצעת את ההתחברות. אנחנו יכולים לתת לה את בדיוק כתובת השרת localhost 3000. אם נניח אנחנו נמצאים בכתובת אחרת נניח שהקליינט הוא לא בדיוק בכתובת שלה, נשאיר את זה רגע בהערה

  3. 01:13

    אבל אם הוא מגיע מאותה כתובת אז אנחנו אוטומטית עושים את זה והוא מתחבר לשרת שלו. אבל מאיפה מגיע המשתנה סוקט הזה, המשתנה io?

  4. 01:27

    המשתנה io נמצא כאן. קודם כל נגדיר כאן קריפט, ניקח src ואנחנו רוצים ללכת לספריית סוקט io שנמצאת אצלנו ב-node.js בתוכה יש socket.io.js ויש לנו את הכובד שלנו Script והכובד שלנו יש לו את השם שלו היה אינדקס.js בצורה כזאת.

  5. 02:06

    האמת אולי אפשר לא בסדר נראה לי שזה יעבוד לפחות בשלב הזה אז יש לנו כאן את ההתחברות עצמה ובעצם יבצע קונקט ואולי עכשיו כשאני חושב על זה נעשה לחצן קונקט.

  6. 02:31

    בואו ניקח פונקציה קונקט, זה יהיה יותר ברור. נעשה שזה יהיה שווה undefined ואז סוקט מקבל את ההתחברות רק כאשר הופצים על קונקט. איך אנחנו שולחים הודעה?

  7. 02:54

    מה שאנחנו רוצים לעשות זה לבצע סוקט הודעה emit. emit שולח לנו את ההודעה. כאן אנחנו חייבים לתת בדיוק את אותה המחרוזת שהסרבר מאזין עליה, זאת.

  8. 03:15

    בואו ניקח את המחרוזת הזאת לפה, ואז מה המידע שאנחנו שולחים? Hello from the client. זאת ההודעה שאני שולח. זה כל הסיפור.

  9. 03:29

    אז כעת מה שיקרה אם אנחנו נריץ את זה, זה שה-client יבצע לחצן אחד לחיצה יבצע התחברות, לחיצה שנייה ישלח הודעה שימו לב שהסרבר עדיין לא שולח הודעות לקליינט תכף נטפל בזה רק הקליינט שולח הסרבר מאזין על שליחת הודעות מהקליינט ומציג אותם על הקונסול

  10. 03:54

    בשלב הזה אני כבר רוצה לבדוק את זה תוכנית רצה בואו ניגש לקובץ html שלנו יש לנו כאן את ה html יש לנו כאן את הקונסול ראשית אני מבצע קונקט, ממתין שנייה ושום דבר לא קורה.

  11. 04:19

    עניין, בואו ננסה לראות אולי יש לנו פה איזושהי שגיאת קונסול כלשהי. מה הוא אומר לנו? בואו ננסה לרפרש, ברור אנחנו לא יכולים קונסט בואו נשים פה let, נריץ את זה שוב פעם קונקט וזה הכל מה שהיה חסר שמה, אנחנו לא יכולים להכניס

  12. 04:52

    ערך ל-const רק ל-let. ערך הכוונה מעבר ל-initialization command. אז הנה אנחנו רואים a client has been connected, total clients 1. בואו נשלח הודעה מה-client הזה, Hello from the client.

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: שימוש ב-Socket.io בצד שרת

ההרצאה הבאה: בניית צ'אט באתר

הרצאות קשורות מקורסים אחרים

  • צד לקוח
  • סיפור לקוח
  • התקפות צד לקוח - מבוא
  • טיפול בקריסות בצד השרת

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React