SendWebSocketMessageEvent.php 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Events;
  3. use Illuminate\Broadcasting\Channel;
  4. use Illuminate\Broadcasting\InteractsWithSockets;
  5. use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
  6. use Illuminate\Foundation\Events\Dispatchable;
  7. use Illuminate\Queue\SerializesModels;
  8. class SendWebSocketMessageEvent implements ShouldBroadcastNow
  9. {
  10. use Dispatchable, InteractsWithSockets, SerializesModels;
  11. const CHANNEL = 'actions';
  12. /**
  13. * Create a new event instance.
  14. */
  15. public function __construct(private readonly string $message, private readonly int $userId, private readonly array $payload)
  16. {
  17. //
  18. }
  19. /**
  20. * Get the channels the event should broadcast on.
  21. *
  22. * @return Channel
  23. */
  24. public function broadcastOn(): Channel
  25. {
  26. return new Channel(self::CHANNEL);
  27. }
  28. public function broadcastWith(): array
  29. {
  30. return [
  31. 'action' => 'message',
  32. 'message' => $this->message,
  33. 'user_id' => $this->userId,
  34. 'payload' => $this->payload,
  35. ];
  36. }
  37. }