Skip to main content
אתה צופה בתיעוד למפתחים
תיעוד זה מיועד למפתחים העובדים עם פלטפורמת המפתחים של Base44.
Actor הוא תהליך בקאנד ארוך טווח שכמה לקוחות מתחברים אליו בו-זמנית. בעזרת actors אפשר לבנות מופעי session חיים שתומכים ביכולות הבאות:
  • הודעות בזמן אמת: שליחה וקבלה של הודעות עם לקוחות באמצעות WebSockets.
  • אחסון קבוע: שמירת מצב ה-session בין תקופות של חוסר פעילות.
  • עבודה מתוזמנת: הרצת לוגיקה במרווח קבוע או בזמן מסוים.
השתמש ב-actors כשאתה בונה תכונות שבהן כמה לקוחות צריכים עדכונים ואינטראקציה בזמן אמת, כמו חדר צ’אט או משחק מרובה משתתפים.

Actors

Actor היא המחלקה שאתה מרחיב בבקאנד. מחלקת ה-actor מגדירה את ההתנהגות של session חי. בעזרת actors אפשר:
  • לנהל חיבורים: לקבל או לדחות לקוח שמתחבר ל-session, ולזהות מי מתחבר.
  • לטפל בהודעות: לקבל הודעה מלקוח, לעדכן את מצב ה-session, ולהשיב ללקוח אחד או לשדר לכולם.
  • לתזמן עבודה: להריץ לוגיקה במרווח קבוע או בזמן מתוזמן.

Sessions

Session הוא מופע רץ של actor, שמזוהה לפי שם ה-actor ומזהה session שאתה בוחר.
כל session מנהל את המצב, האחסון וחיבורי הלקוחות שלו באופן עצמאי.

חיבורים

חיבור מייצג את ה-WebSocket של לקוח אל session. כל לקוח שמצטרף מקבל חיבור ייחודי. ה-actor משתמש בחיבור הזה כדי לזהות מי מתחבר, לנהל חיבורי לקוחות ולשלוח הודעות. למידע נוסף, ראה חיבורים. לתהליך לדוגמה, ראה ניהול חיבורי לקוחות.

Sessions פעילים ולא פעילים

Session נמצא תמיד באחד מהמצבים הבאים:
  • פעיל: ה-session חי ומעבד אירועים. Session הופך לפעיל כשלקוח מתחבר, כשלקוח שולח הודעה ל-session לא פעיל, או כשמגיע זמן השכמה מתוזמן.
  • לא פעיל: ה-session לא מעבד אירועים. Session הופך ללא פעיל זמן קצר אחרי שסיים את ההודעה האחרונה וכל העבודה המתוזמנת נעצרת. ה-session שומר את הנתונים המאוחסנים, את הזמנים המתוזמנים ואת החיבורים הפתוחים עד שהוא הופך לפעיל שוב.
כש-session הופך ללא פעיל, לקוחות עם חיבורים פתוחים נשארים מחוברים. ההודעה הבאה שלהם או השכמה מתוזמנת מפעילות את ה-session מחדש.

לקוח

השתמש ב-base44.actors ב-JavaScript SDK כדי לחבר לקוח ל-session של actor ולהחליף הודעות. ה-SDK של actors תומך ביכולות הבאות:
  • התחברות: פתיחת חיבור WebSocket ל-session.
  • הרשמה: קבלת הודעות מה-actor.
  • שליחה: שליחת הודעות ל-actor.
  • סגירה: סגירת חיבור ה-WebSocket ל-actor.
למידע נוסף, ראה חיבור לקוח ל-session.

איך actors ולקוחות מתקשרים

התרשים הבא מציג את האינטראקציה הכללית בין לקוח ל-actor:
  1. הלקוח מתחבר ל-actor דרך WebSocket.
  2. ה-session מופעל. handleStart() רץ בהפעלה הראשונה ובכל פעם שה-session מופעל ממצב לא פעיל.
  3. ה-actor מטפל בחיבור. אפשר לבדוק את זהות הלקוח ולדחות את החיבור, או לשלוח את המצב הנוכחי.
  4. הלקוח שולח הודעה.
  5. ה-actor מטפל בהודעה. אפשר לאמת את הפורמט ואת ההרשאות של השולח לפני שמשנים את מצב ה-session.
  6. ה-actor משדר את העדכון לכל הלקוחות המחוברים, או משיב רק לשולח.
  7. הלקוח סוגר את החיבור.
  8. ה-actor מטפל בניתוק. אפשר להסיר מצב שקשור לחיבור.

הודעות בזמן אמת

כל לקוח מחובר שייך ל-session ויכול לשלוח הודעות בזמן אמת באמצעות WebSockets. לקוחות יכולים גם להאזין להודעות נכנסות באמצעות subscribe().
Base44 מספקת כמה תכונות בזמן אמת שמשתמשות במאזין מבוסס הרשמה:
  • subscribe() של Actor מאזין להודעות שה-actor שולח ללקוחות מחוברים.
  • subscribe() של Entity מאזין לשינויים ב-entities של האפליקציה.
בדוק באיזה שירות אתה משתמש כדי לקבל את האירועים שאתה מצפה להם.
בעזרת הודעות בזמן אמת אפשר:
  • להשיב ללקוח מסוים.
  • לשדר לכל הלקוחות המחוברים.
  • להציג את הלקוחות שמחוברים כרגע.
  • לזהות כל לקוח ולבדוק אם הוא התחבר לחשבון.
למידע נוסף, ראה חיבורים. לתהליך לדוגמה, ראה ניהול חיבורי לקוחות.

סוגי הודעות

לקוח ו-actor מחליפים הודעות דרך חיבור. ההודעות מתחלקות לסוגים הבאים:
  • הודעות נכנסות: מה שלקוח מחובר שולח ל-actor, כמו טקסט, מהלך או הצבעה. הלקוח שולח אותן עם send(), וה-actor מקבל אותן ב-handleMessage().
  • הודעות יוצאות: מה שה-actor שולח ללקוחות מחוברים, כמו תשובה ללקוח, שידור לכל הלקוחות המחוברים או הלוח הנוכחי כשמישהו מצטרף. ה-actor שולח אותן עם conn.send() או broadcast(), והלקוח מקבל אותן ב-callback של subscribe().
מומלץ להגדיר טיפוסים להודעות, כדי שה-actor והלקוח יסכימו על המבנה של כל הודעה:
  • בקאנד: העבר את הטיפוסים Incoming ו-Outgoing כ-generics למחלקה Actor. לדוגמה מלאה, ראה יצירת actor.
  • לקוח: הרחב את הממשק ActorRegistry עם אותם מבנים, כדי ש-TypeScript יבדוק את הטיפוסים של send() ו-subscribe().

אחסון

Actors מספקים כמה אפשרויות אחסון, בהתאם לאופן שבו ה-session משתמש בנתונים ושומר אותם:
  • אחסון בזיכרון: מצב עבודה שנמצא בשדות המחלקה בזמן שה-session פעיל, ומתאפס כשה-session הופך ללא פעיל.
  • אחסון קבוע: מאגר key-value לנתונים שצריכים לשרוד כשה-session הופך ללא פעיל.

אחסון בזיכרון

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

אחסון קבוע

לכל session יש מאגר key-value משלו שאתה מנהל באופן מלא. השתמש באחסון קבוע כשהנתונים צריכים לשרוד כשה-session הופך ללא פעיל, כמו היסטוריית צ’אט או לוח משחק. לאחסון נתונים שזמינים בכל האפליקציה, השתמש ב-entities. למידע נוסף על אחסון של actors, ראה אחסון.

שחזור מצב

כש-session הופך ללא פעיל, המצב בזיכרון מתאפס. האחסון הקבוע שורד, אבל ה-session לא טוען אוטומטית את הנתונים המאוחסנים חזרה לזיכרון כשהוא מופעל. השתמש ב-handleStart() כדי לשחזר נתונים קבועים, כמו היסטוריית הצ’אט או לוח המשחק. לתהליך לדוגמה, ראה שמירת נתוני session.

עבודה מתוזמנת

Actors מאפשרים ל-session להריץ לוגיקה לפי לוח זמנים, ללא תלות בהודעות של לקוחות:
  • Ticks: מריצים קוד במרווח קבוע ושומרים על ה-session פעיל כל עוד הם חוזרים.
  • השכמות: רצות פעם אחת בזמן שאתה בוחר, בין אם ה-session פעיל ובין אם לא.

Ticks

Ticks מריצים קוד במרווח קבוע, ושומרים על ה-session פעיל כל עוד הם חוזרים. השתמש ב-shouldTick() כדי להגדיר את התנאים להרצת ה-ticks. ה-actor מעריך מחדש את shouldTick() אחרי כל חיבור, הודעה, ניתוק ו-tick. כך ה-ticks נעצרים ברגע שהתנאי כבר לא מתקיים.
Ticks דורשים לפחות לקוח מחובר אחד.
בעזרת ticks אפשר:
  • לבחור את אורך כל מרווח.
  • להגדיר תנאי שמתחיל ועוצר את ה-ticks, כמו “לפחות שני שחקנים נמצאים ב-session.”
  • לכתוב את הקוד שרץ בכל מרווח.
השתמש ב-ticks כדי לשמור על session פעיל גם כשלקוחות לא שולחים הודעות, למשל לעדכון טיימר של סבב. למידע נוסף על ticks, ראה handlers והגדרות של טיימרים. לתהליך לדוגמה, ראה הרצת ticks.

השכמות

השכמה (wake) רצה פעם אחת בזמן שאתה בוחר, בין אם ה-session פעיל ובין אם לא. בעזרת השכמות אפשר:
  • לתזמן מתי השכמה רצה.
  • לממש לוגיקה שרצה כשמתרחשת השכמה.
השתמש בהשכמה כדי לתזמן פעולה חד-פעמית, כמו סיום תור במשחק, סגירת לובי ריק, הפעלת תזכורת או התחלת אירוע בזמן מסוים. למידע נוסף על השכמות, ראה handlers והגדרות של טיימרים. לתהליך לדוגמה, ראה תזמון השכמות.

פריסת actor

פרוס actors עם actors deploy. כדי לדחוף את כל משאבי הפרויקט בבת אחת, השתמש ב-deploy. הפריסה מוסיפה ומעדכנת actors מרוחקים ומשאירה את השאר במקומם.

מחיקת actor

למחיקת actor:
  • הרץ actors delete כדי למחוק את ה-actor המרוחק מ-Base44.
  • מחק את תיקיית ה-actor מהפרויקט המקומי.
אם לא תמחק את ה-actor מהפרויקט המקומי, הפקודה הבאה של actors deploy או deploy תיצור מחדש את ה-actor ותפרוס אותו לפרויקט Base44 שלך.

ראה גם

דף זה תורגם באמצעות AI. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.