티스토리 뷰

반응형

Laravel 11에서 브로드캐스팅을 사용할 때, PrivateChannel과 Reverb (Pusher 대체 OSS)를 함께 사용하는 기본적인 예제.


✅ 개요

  • Laravel 버전: 11
  • 브로드캐스팅 타입: PrivateChannel
  • 브로드캐스터: Reverb
  • 클라이언트: Laravel Echo + Pusher(JS) 호환
  • 보안: 인증된 사용자만 접근 가능한 프라이빗 채널

1. Reverb 설치 및 설정

🔧 Reverb 설치

composer require laravel/reverb
php artisan reverb:install

🧪 Reverb 서버 실행

php artisan reverb:start

📄 .env 설정

BROADCAST_DRIVER=reverb

2. 이벤트 생성

php artisan make:event OrderShipped

📄 OrderShipped.php

use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class OrderShipped implements ShouldBroadcast
{
    public $order;

    public function __construct($order)
    {
        $this->order = $order;
    }

    public function broadcastOn(): PrivateChannel
    {
        return new PrivateChannel('orders.' . $this->order->user_id);
    }

    public function broadcastWith(): array
    {
        return ['order' => $this->order];
    }
}

3. 브로드캐스트 인증 설정

📄 routes/api.php 또는 routes/channels.php

Broadcast::channel('orders.{userId}', function ($user, $userId) {
    return (int) $user->id === (int) $userId;
});

4. 클라이언트 설정 (Echo + Pusher JS)

📦 설치

npm install laravel-echo pusher-js

📄 resources/js/bootstrap.js 예시

import Echo from 'laravel-echo';
import Pusher from 'pusher-js';

window.Pusher = Pusher;

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY, // .env 설정과 일치하게
    wsHost: window.location.hostname,
    wsPort: 6001,
    forceTLS: false,
    disableStats: true,
    enabledTransports: ['ws', 'wss'],
    authEndpoint: '/broadcasting/auth',
});

5. 프론트에서 구독

window.Echo.private(`orders.${userId}`)
    .listen('OrderShipped', (e) => {
        console.log('Order shipped:', e.order);
    });

6. 인증 미들웨어 (/broadcasting/auth)

Laravel은 기본적으로 인증된 사용자에 대해 /broadcasting/auth를 제공합니다. 로그인 사용자만 채널에 접근할 수 있습니다. web 또는 sanctum을 이용한 인증이 필요합니다.


✅ 요약

 

구성요소 설명
이벤트 OrderShipped implements ShouldBroadcast
채널 PrivateChannel 사용
인증 routes/channels.php에서 사용자 ID 비교
서버 Reverb (php artisan reverb:start)
클라이언트 Echo + Pusher.js
반응형

'배움 > PHP' 카테고리의 다른 글

Laravel JWT 구현  (0) 2025.05.26
PHP supervisor 설치 및 실행  (0) 2025.05.21
Laravel 11 테스트 코드 작성 샘플  (0) 2025.05.14
Laravel 11 Validator::make  (0) 2025.05.13
artisan 명령어  (0) 2025.05.08
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함