AdminRealtimeBroadcast.php 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace App\Events;
  3. use Illuminate\Broadcasting\PrivateChannel;
  4. use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
  5. /**
  6. * 后台列表实时推送的单条消息,由 admin-realtime:relay 同步广播(不经队列)。
  7. * 前端 Echo:echo.private('admin.orders.sport').listen('.order.created', handler)
  8. */
  9. class AdminRealtimeBroadcast implements ShouldBroadcastNow
  10. {
  11. /** @param array{seq:int,id:int,channel:string,event:string,action:string,key:string,data:array,source:string,created_at:string} $message */
  12. public function __construct(public readonly array $message)
  13. {
  14. }
  15. public function broadcastConnections(): array
  16. {
  17. return [config('admin_realtime.connection')];
  18. }
  19. public function broadcastOn(): array
  20. {
  21. return [new PrivateChannel($this->message['channel'])];
  22. }
  23. public function broadcastAs(): string
  24. {
  25. return $this->message['event'];
  26. }
  27. public function broadcastWith(): array
  28. {
  29. return $this->message;
  30. }
  31. }