---
title: "Broadcasting — Likes for Laravel | Roundly"
description: "Voliteľné vysielanie udalostí Liked, Unliked a ReactionChanged cez Laravel Echo na kanáloch likes.{morph}.{id}."
url: https://roundly-consulting.com/sk/open-source/navody/likes-for-laravel/vysielanie-udalosti
language: sk
---

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

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

# Broadcasting

Liked, Unliked a ReactionChanged sa dajú vysielať cez Laravel Echo. Broadcasting je predvolene vypnutý, takže existujúce inštalácie sa nezmenia. Zapnete ho v config/likes.php alebo v prostredí:

```php
// config/likes.php
'broadcast' => [
    'enabled' => env('LIKES_BROADCAST', true),
    'channel_prefix' => 'likes',
    'channel_type' => 'private',   // private | public | presence
],
```

```bash
LIKES_BROADCAST=true
```

Po zapnutí sa každá udalosť vysiela na kanáli {channel\_prefix}.{segment}.{id}, kde segment je celá morph trieda cieľového modelu so spätnými lomkami nahradenými bodkami, ako to robí broadcasting modelov v Laraveli — alebo jej alias z morph mapy bez zmeny. App\\Models\\Post s id 42 sa vysiela na likes.App.Models.Post.42, pri Relation::morphMap(\['post' => Post::class\]) na likes.post.42. Vaše listenery dostávajú udalosti bez ohľadu na toto nastavenie.

| Udalosť | Vysiela sa ako |
| --- | --- |
| `Liked` | `like.created` |
| `Unliked` | `like.removed` |
| `ReactionChanged` | `reaction.changed` |

## Autorizácia súkromných kanálov

Predvolený typ kanála je private, preto ho autorizujte v routes/channels.php:

```php
// routes/channels.php
use Illuminate\Support\Facades\Broadcast;

Broadcast::channel('likes.App.Models.Post.{id}', function ($user, int $id): bool {
    return $user->can('view', Post::findOrFail($id));
});
```

## Počúvanie cez Echo

Keďže udalosti majú vlastné názvy pre broadcasting, v Echo pred ne pridajte bodku:

```js
Echo.private('likes.App.Models.Post.42')
    .listen('.like.created', (e) => { /* e.like_id, e.actor_type, e.actor_id, e.likeable_type, e.likeable_id, e.type */ })
    .listen('.like.removed', (e) => { /* ... */ })
    .listen('.reaction.changed', (e) => { /* e.from, e.to */ });
```

## Doručenie a obsah správy

Udalosti implementujú ShouldBroadcast, takže vysielanie prechádza vašou frontou. Obsah nesie len identifikátory a reakciu — nikdy modely aktéra či cieľového objektu —, takže sa k odberateľovi kanála nedostane žiadny atribút vašich používateľov:

```php
// like.created / like.removed
['like_id' => 7, 'actor_type' => 'User', 'actor_id' => 1,
 'likeable_type' => 'Post', 'likeable_id' => 42, 'type' => 'love']

// reaction.changed — `from` / `to` instead of `type`
[..., 'from' => 'like', 'to' => 'love']
```

actor\_type a likeable\_type obsahujú krátky názov triedy modelu (User, Post) — nikdy nie názov PHP triedy ani alias z morph mapy, či už morph mapu máte, alebo nie. Pred verziou 1.1.2 aplikácia bez morph mapy posielala každému odberateľovi App\\Models\\User — listenery, ktoré sa riadili starou hodnotou, upravte. Tieto polia správu len označujú: cieľový model naďalej určuje názov kanála, ktorý zostáva bez zmeny (likes.App.Models.Post.42). Rovnomenné modely v rôznych menných priestoroch (Blog\\Post, Forum\\Post) majú rovnaký krátky názov, takže listener, ktorý ich potrebuje rozlíšiť, sa riadi kanálom, ktorý odoberá.

Čokoľvek ďalšie si na klientovi načítajte podľa id.

## 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/likes-for-laravel.md)
