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í:
// config/likes.php
'broadcast' => [
'enabled' => env('LIKES_BROADCAST', true),
'channel_prefix' => 'likes',
'channel_type' => 'private', // private | public | presence
],LIKES_BROADCAST=truePo zapnutí sa každá udalosť vysiela na kanáli {channel_prefix}.{segment}.{id}, kde segment je morph trieda cieľového modelu — len posledná časť, v snake_case a v množnom čísle. App\Models\Post s id 42 sa vysiela na likes.posts.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:
// routes/channels.php
use Illuminate\Support\Facades\Broadcast;
Broadcast::channel('likes.posts.{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:
Echo.private('likes.posts.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:
// like.created / like.removed
['like_id' => 7, 'actor_type' => 'App\Models\User', 'actor_id' => 1,
'likeable_type' => 'App\Models\Post', 'likeable_id' => 42, 'type' => 'love']
// reaction.changed — `from` / `to` instead of `type`
[..., 'from' => 'like', 'to' => 'love']Č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 kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
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.