---
title: "Broadcasting — Messages for Laravel | Roundly"
description: "Vysielajte vlákna, účastníkov, správy a písanie naživo cez Reverb, Pusher či Ably — predvolene vypnuté, kanály aj názvy konfigurovateľné."
url: https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel/vysielanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Messages for Laravel](https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel.md)

# Broadcasting

Broadcasting je predvolene vypnutý — bežné udalosti sa spúšťajú tak či tak. Zapnite ho, ak chcete zmeny posielať naživo cez broadcasting v Laraveli (Reverb, Pusher, Ably, …):

```bash
REALTIME_MESSAGES=true
```

Po zapnutí používajú modely Thread, Participant a Message trait BroadcastsEvents z Laravelu pri vytvorení, úprave, zmazaní a obnovení. Nové vlákno sa ohlási až vtedy, keď sú v ňom jeho účastníci, takže súkromné vlákno sa dostane ku každému z nich. Mäkké zmazanie — zrušenie odoslania či odchod — spustí v Laraveli udalosti modelu trashed aj deleted, no vyšle sa len raz, ako trashed; trvalé zmazanie sa vyšle raz, ako deleted.

Vlákno vysiela len svoje vytvorenie: premenovanie, archivácia ani zmazanie sa nevysielajú. Ak ich chcete posielať, reagujte na udalosti ThreadRenamed a ThreadArchived — alebo zapnite systémové správy, ktoré do vlákna vložia (vysielanú) správu o premenovaní.

## Kanály

| Kanál | Typ | Prenáša |
| --- | --- | --- |
| `messaging` | verejný | messaging.thread.created pre verejné vlákna. |
| `messaging.participant.{name}.{id}` | súkromný | messaging.thread.created pre súkromné a priame vlákna — raz pre každého účastníka: {id} je jeho kľúč, {name} názov jeho triedy malými písmenami (napr. user) a {type} jeho celý morph typ (pozri nižšie). |
| `messaging.thread.{id}` | súkromný | Udalosti účastníkov (joined, read, left), správ (sent, updated, unsent, restored) a písania. |

Balík neregistruje žiadne autorizačné callbacky kanálov — súkromné kanály autorizujte v routes/channels.php vašej aplikácie, napríklad overením, že používateľ je účastníkom vlákna (Thread::query()->forParticipant($user)).

## Názvy kanálov a udalostí

Každý názov kanála aj udalosti je konfigurovateľný:

```php
'broadcasting' => [
    'enabled' => env('REALTIME_MESSAGES', false),

    'threads' => [
        'public-channel' => 'messaging',
        'per-participant-channel' => 'messaging.participant.{name}.{id}',   // {name}, {type} or {id}
        'events' => [
            'created' => 'messaging.thread.created',
        ],
    ],

    'participants' => [
        'channel' => 'messaging.thread.{id}',
        'events' => [
            'created' => 'messaging.participant.joined',
            'updated' => 'messaging.participant.read',
            'trashed' => 'messaging.participant.left',
            'restored' => 'messaging.participant.joined',
            'deleted' => 'messaging.participant.left',
        ],
    ],

    'typing' => [
        'event' => 'messaging.participant.typing',
    ],

    'messages' => [
        'channel' => 'messaging.thread.{id}',
        'events' => [
            'created' => 'messaging.message.sent',
            'updated' => 'messaging.message.updated',
            'trashed' => 'messaging.message.unsent',
            'restored' => 'messaging.message.restored',
            'deleted' => 'messaging.message.unsent',
        ],
    ],
],
```

## Zástupné symboly kanála účastníka

Kanál pre každého účastníka prijíma tri zástupné symboly: {id} je kľúč účastníka; {name} názov jeho triedy malými písmenami (App\\Models\\User → user); {type} jeho celý morph typ malými písmenami, s \\ nahradeným bodkou (app.models.user, pri morph mape samotný alias). Bez morph mapy zdieľajú dva modely s rovnakým názvom triedy — App\\Models\\User a App\\Models\\Admin\\User — jeden kanál {name} a každý dostáva ohlásenia thread.created toho druhého. Prejdite na {type} a tento kanál autorizujte v routes/channels.php, alebo zaregistrujte morph mapu:

```php
// config/messages.php — 'broadcasting' => [ 'threads' => [ … ] ]
'per-participant-channel' => 'messaging.participant.{type}.{id}',
// App\Models\Admin\User #5 → private-messaging.participant.app.models.admin.user.5
```

## Payloady

- Thread — id, name, is\_public, everyone\_can\_join.
- Participant — id, participant (participateAs()), read\_at, joined\_at, left\_at.
- Message — id, sender (participateAs()), message (po zrušení odoslania null), sent\_at, updated\_at, deleted\_at.
- Písanie — thread\_id, participant (participateAs()).

## Indikátor písania

Na kanál vlákna vyšlete živý indikátor písania — len sa vysiela (nikdy neukladá), rešpektuje broadcasting.enabled a každého, kto nie je aktuálnym účastníkom, odmietne výnimkou ParticipationException, či je broadcasting zapnutý, alebo nie:

```php
use RoundlyConsulting\Messages\Facades\Messages;

Messages::thread($thread)->typing($user);   // broadcasts ParticipantTyping — never persisted
$thread->typing($user);                     // the same, from the model
```

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel.md)
