> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# סקירת Actors

> למד איך actors מריצים sessions משותפים וחיים עם הודעות בזמן אמת וטיימרים

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      אתה צופה בתיעוד למפתחים
    </div>

    <div className="dev-docs-banner-text">
      תיעוד זה מיועד למפתחים העובדים עם פלטפורמת המפתחים של Base44.
    </div>
  </div>
</div>

Actor הוא תהליך בקאנד ארוך טווח שכמה לקוחות מתחברים אליו בו-זמנית.

בעזרת actors אפשר לבנות מופעי session חיים שתומכים ביכולות הבאות:

* **הודעות בזמן אמת:** שליחה וקבלה של הודעות עם לקוחות באמצעות WebSockets.
* **אחסון קבוע:** שמירת מצב ה-session בין תקופות של חוסר פעילות.
* **עבודה מתוזמנת:** הרצת לוגיקה במרווח קבוע או בזמן מסוים.

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

## Actors

[`Actor`](/he/developers/backend/resources/actors/reference) היא המחלקה שאתה מרחיב בבקאנד.

מחלקת ה-actor מגדירה את ההתנהגות של session חי. בעזרת actors אפשר:

* **[לנהל חיבורים](#connections):** לקבל או לדחות לקוח שמתחבר ל-session, ולזהות מי מתחבר.
* **[לטפל בהודעות](#realtime-messages):** לקבל הודעה מלקוח, לעדכן את מצב ה-session, ולהשיב ללקוח אחד או לשדר לכולם.
* **[לתזמן עבודה](#scheduled-work):** להריץ לוגיקה במרווח קבוע או בזמן מתוזמן.

## Sessions

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

### חיבורים

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

למידע נוסף, ראה [חיבורים](/he/developers/backend/resources/actors/reference#connections). לתהליך לדוגמה, ראה [ניהול חיבורי לקוחות](/he/developers/backend/resources/actors/sample-flows#manage-client-connections).

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

Session נמצא תמיד באחד מהמצבים הבאים:

* **פעיל:** ה-session חי ומעבד אירועים. Session הופך לפעיל כשלקוח מתחבר, כשלקוח שולח הודעה ל-session לא פעיל, או כשמגיע זמן השכמה מתוזמן.
* **לא פעיל:** ה-session לא מעבד אירועים. Session הופך ללא פעיל זמן קצר אחרי שסיים את ההודעה האחרונה וכל העבודה המתוזמנת נעצרת. ה-session שומר את [הנתונים המאוחסנים](#storage), את הזמנים המתוזמנים ואת החיבורים הפתוחים עד שהוא הופך לפעיל שוב.

כש-session הופך ללא פעיל, לקוחות עם חיבורים פתוחים נשארים מחוברים. ההודעה הבאה שלהם או [השכמה](#wakes) מתוזמנת מפעילות את ה-session מחדש.

## לקוח

השתמש ב-[`base44.actors`](/he/developers/references/sdk/docs/type-aliases/actors) ב-JavaScript SDK כדי לחבר לקוח ל-session של actor ולהחליף הודעות.

ה-SDK של actors תומך ביכולות הבאות:

* **התחברות:** פתיחת חיבור WebSocket ל-session.
* **הרשמה:** קבלת הודעות מה-actor.
* **שליחה:** שליחת הודעות ל-actor.
* **סגירה:** סגירת חיבור ה-WebSocket ל-actor.

למידע נוסף, ראה [חיבור לקוח ל-session](/he/developers/backend/resources/actors/sample-flows#connect-a-client-to-a-session).

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

התרשים הבא מציג את האינטראקציה הכללית בין לקוח ל-actor:

```mermaid theme={null}
sequenceDiagram
    participant C as לקוח
    participant A as Actor

    C->>A: 1. connect(sessionId)
    A->>A: 2. handleStart()
    A->>A: 3. handleConnect(conn)
    C->>A: 4. send(data)
    A->>A: 5. handleMessage(conn, msg)
    A-->>C: 6. broadcast(data)
    C->>A: 7. close()
    A->>A: 8. handleClose(conn)
```

1. הלקוח מתחבר ל-actor דרך WebSocket.
2. ה-session מופעל. [`handleStart()`](/he/developers/backend/resources/actors/reference#lifecycle-handlers) רץ בהפעלה הראשונה ובכל פעם שה-session מופעל ממצב לא פעיל.
3. ה-actor מטפל בחיבור. אפשר לבדוק את זהות הלקוח ולדחות את החיבור, או לשלוח את המצב הנוכחי.
4. הלקוח שולח הודעה.
5. ה-actor מטפל בהודעה. אפשר לאמת את הפורמט ואת ההרשאות של השולח לפני שמשנים את מצב ה-session.
6. ה-actor משדר את העדכון לכל הלקוחות המחוברים, או משיב רק לשולח.
7. הלקוח סוגר את החיבור.
8. ה-actor מטפל בניתוק. אפשר להסיר מצב שקשור לחיבור.

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

כל לקוח מחובר שייך ל-session ויכול לשלוח הודעות בזמן אמת באמצעות WebSockets. לקוחות יכולים גם להאזין להודעות נכנסות באמצעות [`subscribe()`](/he/developers/references/sdk/docs/type-aliases/actors#subscribe).

<Note>
  Base44 מספקת כמה תכונות בזמן אמת שמשתמשות במאזין מבוסס הרשמה:

  * [`subscribe()`](/he/developers/references/sdk/docs/type-aliases/actors#subscribe) של Actor מאזין להודעות שה-actor שולח ללקוחות מחוברים.
  * [`subscribe()`](/he/developers/references/sdk/docs/type-aliases/entities#subscribe) של Entity מאזין לשינויים ב-entities של האפליקציה.

  בדוק באיזה שירות אתה משתמש כדי לקבל את האירועים שאתה מצפה להם.
</Note>

בעזרת הודעות בזמן אמת אפשר:

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

למידע נוסף, ראה [חיבורים](#connections). לתהליך לדוגמה, ראה [ניהול חיבורי לקוחות](/he/developers/backend/resources/actors/sample-flows#manage-client-connections).

## סוגי הודעות

לקוח ו-actor מחליפים הודעות דרך חיבור. ההודעות מתחלקות לסוגים הבאים:

* **הודעות נכנסות:** מה שלקוח מחובר שולח ל-actor, כמו טקסט, מהלך או הצבעה. הלקוח שולח אותן עם [`send()`](/he/developers/references/sdk/docs/type-aliases/actors#send), וה-actor מקבל אותן ב-[`handleMessage()`](/he/developers/backend/resources/actors/reference#lifecycle-handlers).
* **הודעות יוצאות:** מה שה-actor שולח ללקוחות מחוברים, כמו תשובה ללקוח, שידור לכל הלקוחות המחוברים או הלוח הנוכחי כשמישהו מצטרף. ה-actor שולח אותן עם [`conn.send()`](/he/developers/backend/resources/actors/reference#connections) או `broadcast()`, והלקוח מקבל אותן ב-callback של [`subscribe()`](/he/developers/references/sdk/docs/type-aliases/actors#subscribe).

מומלץ להגדיר טיפוסים להודעות, כדי שה-actor והלקוח יסכימו על המבנה של כל הודעה:

* **בקאנד:** העבר את הטיפוסים `Incoming` ו-`Outgoing` כ-generics למחלקה `Actor`. לדוגמה מלאה, ראה [יצירת actor](/he/developers/backend/resources/actors/create-actor).
* **לקוח:** הרחב את הממשק [`ActorRegistry`](/he/developers/references/sdk/docs/type-aliases/actors#actorregistry) עם אותם מבנים, כדי ש-TypeScript יבדוק את הטיפוסים של `send()` ו-`subscribe()`.

## אחסון

Actors מספקים כמה אפשרויות אחסון, בהתאם לאופן שבו ה-session משתמש בנתונים ושומר אותם:

* **[אחסון בזיכרון](#in-memory-storage):** מצב עבודה שנמצא בשדות המחלקה בזמן שה-session פעיל, ומתאפס כשה-session הופך ללא פעיל.
* **[אחסון קבוע](#persistent-storage):** מאגר key-value לנתונים שצריכים לשרוד כשה-session הופך ללא פעיל.

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

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

כש-session הופך ללא פעיל, שדות המחלקה מתאפסים.

### אחסון קבוע

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

לאחסון נתונים שזמינים בכל האפליקציה, השתמש ב-[entities](/he/developers/backend/resources/entities/overview).

למידע נוסף על אחסון של actors, ראה [אחסון](/he/developers/backend/resources/actors/reference#storage).

### שחזור מצב

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

השתמש ב-[`handleStart()`](/he/developers/backend/resources/actors/reference#lifecycle-handlers) כדי לשחזר נתונים קבועים, כמו היסטוריית הצ'אט או לוח המשחק.

לתהליך לדוגמה, ראה [שמירת נתוני session](/he/developers/backend/resources/actors/sample-flows#persist-session-data).

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

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

* **[Ticks](#ticks):** מריצים קוד במרווח קבוע ושומרים על ה-session פעיל כל עוד הם חוזרים.
* **[השכמות](#wakes):** רצות פעם אחת בזמן שאתה בוחר, בין אם ה-session פעיל ובין אם לא.

### Ticks

Ticks מריצים קוד במרווח קבוע, ושומרים על ה-session פעיל כל עוד הם חוזרים.

השתמש ב-[`shouldTick()`](/he/developers/backend/resources/actors/reference#timer-handlers-and-settings) כדי להגדיר את התנאים להרצת ה-ticks.
ה-actor מעריך מחדש את `shouldTick()` אחרי כל חיבור, הודעה, ניתוק ו-tick. כך ה-ticks נעצרים ברגע שהתנאי כבר לא מתקיים.

<Note>
  Ticks דורשים לפחות לקוח מחובר אחד.
</Note>

בעזרת ticks אפשר:

* לבחור את אורך כל מרווח.
* להגדיר תנאי שמתחיל ועוצר את ה-ticks, כמו "לפחות שני שחקנים נמצאים ב-session."
* לכתוב את הקוד שרץ בכל מרווח.

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

למידע נוסף על ticks, ראה [handlers והגדרות של טיימרים](/he/developers/backend/resources/actors/reference#timer-handlers-and-settings). לתהליך לדוגמה, ראה [הרצת ticks](/he/developers/backend/resources/actors/sample-flows#run-ticks).

### השכמות

השכמה (wake) רצה פעם אחת בזמן שאתה בוחר, בין אם ה-session פעיל ובין אם לא.

בעזרת השכמות אפשר:

* לתזמן מתי השכמה רצה.
* לממש לוגיקה שרצה כשמתרחשת השכמה.

השתמש בהשכמה כדי לתזמן פעולה חד-פעמית, כמו סיום תור במשחק, סגירת לובי ריק, הפעלת תזכורת או התחלת אירוע בזמן מסוים.

למידע נוסף על השכמות, ראה [handlers והגדרות של טיימרים](/he/developers/backend/resources/actors/reference#timer-handlers-and-settings). לתהליך לדוגמה, ראה [תזמון השכמות](/he/developers/backend/resources/actors/sample-flows#schedule-wakes).

## פריסת actor

פרוס actors עם [`actors deploy`](/he/developers/references/cli/commands/actors-deploy). כדי לדחוף את כל משאבי הפרויקט בבת אחת, השתמש ב-[`deploy`](/he/developers/references/cli/commands/deploy). הפריסה מוסיפה ומעדכנת actors מרוחקים ומשאירה את השאר במקומם.

## מחיקת actor

למחיקת actor:

* הרץ [`actors delete`](/he/developers/references/cli/commands/actors-delete) כדי למחוק את ה-actor המרוחק מ-Base44.
* מחק את תיקיית ה-actor מהפרויקט המקומי.

<Note>
  אם לא תמחק את ה-actor מהפרויקט המקומי, הפקודה הבאה של [`actors deploy`](/he/developers/references/cli/commands/actors-deploy) או [`deploy`](/he/developers/references/cli/commands/deploy) תיצור מחדש את ה-actor ותפרוס אותו לפרויקט Base44 שלך.
</Note>

## ראה גם

* [יצירת Actor](/he/developers/backend/resources/actors/create-actor): קובצי actor ומחלקה מינימלית
* [Actors: תהליכים לדוגמה](/he/developers/backend/resources/actors/sample-flows): מחזור חיים, טיימרים, חיבורים, אחסון, entities ופונקציות בקאנד
* [קבצים וקוד של Actors](/he/developers/backend/resources/actors/reference): ה-API המלא של מחלקת הבקאנד
* [תיעוד ה-SDK של `actors`](/he/developers/references/sdk/docs/type-aliases/actors): ה-API של ה-SDK בצד הלקוח

<Note>דף זה תורגם באמצעות AI. למידע המדויק והעדכני ביותר, עיין ב[גרסה האנגלית](/). </Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.