- Laravel , Broadcasting

    - 브로드캐스트 : 송신기능
    - 에코 : 브로드캐스트되는 이벤트를 브라우저에서 수신하기 쉽게 해주는 자바스크립트 라이브러리


//=================
.env 수정
BROADCAST_DRIVER=pusher

//=====================================================
< 드라이버 >

//=====
* Pusher
composer require pusher/pusher-php-server
config/broadcasting.php 설정 파일 수정


//========
* Redis
composer require predis/predis
    - 웹소켓 서버가 있어야 함
    - 레디스와 웹소캣 서버를 페어링


//==============================
* 이벤트 정의 생성
App\Events\BroadcastEvent.php 파일 생성
<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class BroadcastEvent implements ShouldBroadcast // ShouldBroadcast 필요
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $msg;
    public function __construct( $msg = '0')
    {
         $this->msg = $msg;
    }

    //브로드캐스팅
    public function broadcastOn()
    {
        return ['channel-1']; //채널 이름
    }
}

//=============
* 이벤트 발생시키기
event( new App\Events\BroadcastEvent($msg) )


//======================
< 이벤트 받기 >

    - Pusher 라이브러리 이용

<script src="//js.pusher.com/4.4/pusher.min.js"></script>
 
    <script type="text/javascript">

      var pusher = new Pusher('{{env('PUSHER_APP_KEY')}}',{
            cluster: '{{env('PUSHER_APP_CLUSTER')}}',
            encrypted: true,
      });

      // 채널 설정
      var channel = pusher.subscribe('channel-1');

      // 이벤트 받기
      channel.bind('App\\Events\\BroadEvent, function(data) {
        	console.log(data, data.msg);
      });

    </script>


//====================
// 참고
https://laravel.kr/docs/5.5/broadcasting

CREATE WEB NOTIFICATIONS USING LARAVEL AND PUSHER CHANNELS
https://pusher.com/tutorials/web-notifications-laravel-pusher-channels
- 브로드캐스트, 이벤트 이용 , 
예제) https://github.com/neoighodaro/laravel-pusher-web-notifications

 

'Code > Web' 카테고리의 다른 글

한국 웹 브라우저 점유율  (0) 2019.07.21
Redis 속도 테스트 - predis 와 phpredis 비교  (0) 2019.07.18
[라라벨] 브로드캐스팅  (0) 2019.07.18
[Laravel] 라라벨 이벤트 사용법  (0) 2019.07.18
MongoDB 사용법  (0) 2019.07.14
[Node.js] 노드 설치, 업그레이드  (0) 2019.07.13
Posted by 코덴스

댓글을 달아 주세요