티스토리 뷰
반응형
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
링크
TAG
- Reverb
- Laravel
- #php
- swagger
- laravel 12
- 근로·자녀 장려금
- copilot
- 청년내일
- 라라벨
- 비동기
- createfromformat
- 설치
- 테스트 코드
- mysql
- ubuntu
- PYTHON
- php
- laravel 11
- 아이쿠카
- #collect
- wsl
- 웹 크롤러
- 청년내일저축계좌
- strict_types
- flask
- laravel 테스트
- researcher
- 저축계좌
- WSL2
- privatechannel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함