- הודעות בזמן אמת: שליחה וקבלה של הודעות עם לקוחות באמצעות WebSockets.
- אחסון קבוע: שמירת מצב ה-session בין תקופות של חוסר פעילות.
- עבודה מתוזמנת: הרצת לוגיקה במרווח קבוע או בזמן מסוים.
Actors
Actor היא המחלקה שאתה מרחיב בבקאנד.
מחלקת ה-actor מגדירה את ההתנהגות של session חי. בעזרת actors אפשר:
- לנהל חיבורים: לקבל או לדחות לקוח שמתחבר ל-session, ולזהות מי מתחבר.
- לטפל בהודעות: לקבל הודעה מלקוח, לעדכן את מצב ה-session, ולהשיב ללקוח אחד או לשדר לכולם.
- לתזמן עבודה: להריץ לוגיקה במרווח קבוע או בזמן מתוזמן.
Sessions
Session הוא מופע רץ של actor, שמזוהה לפי שם ה-actor ומזהה session שאתה בוחר.כל session מנהל את המצב, האחסון וחיבורי הלקוחות שלו באופן עצמאי.
חיבורים
חיבור מייצג את ה-WebSocket של לקוח אל session. כל לקוח שמצטרף מקבל חיבור ייחודי. ה-actor משתמש בחיבור הזה כדי לזהות מי מתחבר, לנהל חיבורי לקוחות ולשלוח הודעות. למידע נוסף, ראה חיבורים. לתהליך לדוגמה, ראה ניהול חיבורי לקוחות.Sessions פעילים ולא פעילים
Session נמצא תמיד באחד מהמצבים הבאים:- פעיל: ה-session חי ומעבד אירועים. Session הופך לפעיל כשלקוח מתחבר, כשלקוח שולח הודעה ל-session לא פעיל, או כשמגיע זמן השכמה מתוזמן.
- לא פעיל: ה-session לא מעבד אירועים. Session הופך ללא פעיל זמן קצר אחרי שסיים את ההודעה האחרונה וכל העבודה המתוזמנת נעצרת. ה-session שומר את הנתונים המאוחסנים, את הזמנים המתוזמנים ואת החיבורים הפתוחים עד שהוא הופך לפעיל שוב.
לקוח
השתמש ב-base44.actors ב-JavaScript SDK כדי לחבר לקוח ל-session של actor ולהחליף הודעות.
ה-SDK של actors תומך ביכולות הבאות:
- התחברות: פתיחת חיבור WebSocket ל-session.
- הרשמה: קבלת הודעות מה-actor.
- שליחה: שליחת הודעות ל-actor.
- סגירה: סגירת חיבור ה-WebSocket ל-actor.
איך actors ולקוחות מתקשרים
התרשים הבא מציג את האינטראקציה הכללית בין לקוח ל-actor:- הלקוח מתחבר ל-actor דרך WebSocket.
- ה-session מופעל.
handleStart()רץ בהפעלה הראשונה ובכל פעם שה-session מופעל ממצב לא פעיל. - ה-actor מטפל בחיבור. אפשר לבדוק את זהות הלקוח ולדחות את החיבור, או לשלוח את המצב הנוכחי.
- הלקוח שולח הודעה.
- ה-actor מטפל בהודעה. אפשר לאמת את הפורמט ואת ההרשאות של השולח לפני שמשנים את מצב ה-session.
- ה-actor משדר את העדכון לכל הלקוחות המחוברים, או משיב רק לשולח.
- הלקוח סוגר את החיבור.
- ה-actor מטפל בניתוק. אפשר להסיר מצב שקשור לחיבור.
הודעות בזמן אמת
כל לקוח מחובר שייך ל-session ויכול לשלוח הודעות בזמן אמת באמצעות WebSockets. לקוחות יכולים גם להאזין להודעות נכנסות באמצעותsubscribe().
Base44 מספקת כמה תכונות בזמן אמת שמשתמשות במאזין מבוסס הרשמה:
subscribe()של Actor מאזין להודעות שה-actor שולח ללקוחות מחוברים.subscribe()של Entity מאזין לשינויים ב-entities של האפליקציה.
- להשיב ללקוח מסוים.
- לשדר לכל הלקוחות המחוברים.
- להציג את הלקוחות שמחוברים כרגע.
- לזהות כל לקוח ולבדוק אם הוא התחבר לחשבון.
סוגי הודעות
לקוח ו-actor מחליפים הודעות דרך חיבור. ההודעות מתחלקות לסוגים הבאים:- הודעות נכנסות: מה שלקוח מחובר שולח ל-actor, כמו טקסט, מהלך או הצבעה. הלקוח שולח אותן עם
send(), וה-actor מקבל אותן ב-handleMessage(). - הודעות יוצאות: מה שה-actor שולח ללקוחות מחוברים, כמו תשובה ללקוח, שידור לכל הלקוחות המחוברים או הלוח הנוכחי כשמישהו מצטרף. ה-actor שולח אותן עם
conn.send()אוbroadcast(), והלקוח מקבל אותן ב-callback שלsubscribe().
- בקאנד: העבר את הטיפוסים
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, כמו “לפחות שני שחקנים נמצאים ב-session.”
- לכתוב את הקוד שרץ בכל מרווח.
השכמות
השכמה (wake) רצה פעם אחת בזמן שאתה בוחר, בין אם ה-session פעיל ובין אם לא. בעזרת השכמות אפשר:- לתזמן מתי השכמה רצה.
- לממש לוגיקה שרצה כשמתרחשת השכמה.
פריסת actor
פרוס actors עםactors deploy. כדי לדחוף את כל משאבי הפרויקט בבת אחת, השתמש ב-deploy. הפריסה מוסיפה ומעדכנת actors מרוחקים ומשאירה את השאר במקומם.
מחיקת actor
למחיקת actor:- הרץ
actors deleteכדי למחוק את ה-actor המרוחק מ-Base44. - מחק את תיקיית ה-actor מהפרויקט המקומי.
אם לא תמחק את ה-actor מהפרויקט המקומי, הפקודה הבאה של
actors deploy או deploy תיצור מחדש את ה-actor ותפרוס אותו לפרויקט Base44 שלך.ראה גם
- יצירת Actor: קובצי actor ומחלקה מינימלית
- Actors: תהליכים לדוגמה: מחזור חיים, טיימרים, חיבורים, אחסון, entities ופונקציות בקאנד
- קבצים וקוד של Actors: ה-API המלא של מחלקת הבקאנד
- תיעוד ה-SDK של
actors: ה-API של ה-SDK בצד הלקוח
דף זה תורגם באמצעות AI. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.