롸?

라라벨 브로드캐스팅 & 라라벨 에코 서버 본문

Framework/Laravel

라라벨 브로드캐스팅 & 라라벨 에코 서버

허니버터새우깡 2021. 12. 10. 15:16

라라벨의 브로드캐스팅과 에코 서버에 대한 이해를 위해 작성

 

1. 개요

많은 모던 웹 애플리케이션에서, WebSockets은 실시간 구현과 UI의 live-updating을 위해 사용된다. WebSockets은 만약 서버에 어떤 데이터가 변경되었을 때, 사용자 측면에서 화면 새로고침 없이 데이터의 변화를 UI에 반영할 수 있도록 해준다. 이러한 기능을 구현하기 위해서 라라벨에서 제공하는 것이 “broadcast”인 것이다.

 

라라벨 이벤트를 Broadcasting 하면 Server-side 라라벨 애플리케이션과 Client-side 자바스크립트 애플리케이션 간에 동일한 이벤트 이름과 데이터를 공유할 수 있게 해준다.

 

2. 용어

브로드캐스팅서버에 데이터가 변경되면 메세지가 웹 소캣 연결로 보내져 클라이언트에 의해 처리될 수 있도록 하는것.

라라벨에서 제공하는 브로드캐스트 드라이버로는(Pusher Channels, Redis,디버깅 용도의 log 드라이버)를 지원한다. 추가적으로 전체적으로 브로드캐스팅을 끌 수 있도록 해주는 null 드라이버도 제공된다. 각각의 드라이버의 설정 파일은 config/broadcasting.php 파일에 존재한다.

 

Redis : 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스 (BSD 라이선스), 인 메모리 데이터 구조 저장소이다.

쿼리 언어를 사용하지 않는 대표적인 NoSQL DBMS이다.

 

Redis의 pub/sub : 일반적인 pub/sub의 개념에서 알 수 있듯이, 메시지를 보내는 publish와 그 메시지를 수신할 수 있는 subscribe를 말한다. Redis에서는 subscribe가 된 상태의 클라이언트만 publish되는 메시지를 받을 수 있다.

pub/sub의 경우 바로 subscribe한 구독자들에게 메시지를 전송하므로, 메시지를 보관하지 않는다. 주로 채팅 기능이나, 푸시 알림 등에서 사용.

 

Socket.io : 실시간 웹 애플리케이션을위한 JavaScript 라이브러리이며 웹 클라이언트와 서버간에 실시간 양방향 통신이 가능하다. 실시간 라이브러리로 자매품인 Websocket도 있다.

 

3. 흐름

라라벨에서 redis를 이용해 브로드캐스팅하는 전반적인 그림을 살펴보면 이러하다.

라라벨에서 이벤트가 발생하면 Redis로 전송하고, Redis가 받은 데이터는 웹 소켓 역할을 하는 Laravel-echo-server로 전달된다. Laravel-echo는 client단에서 (프론드단에서) 소켓 통신으로 listening을 하며 laravel-echo-server로부터 데이터를 받는다.

 

 

간단하게 보면 프론트단의 애플리케이션과 서버단의 애플리케이션(라라벨)을 이어주는 역할을 한다고도 볼 수 있을 듯

크게는 HTTP통신과 소켓통신의 차이를 기본으로 알고 있어야 함.

 


참고 

1.  https://laravel.com/docs/8.x/broadcasting

2.  https://medium.com/sjk5766/laravel-broadcast-redis-%ED%8E%B8-74be51464a19

3.  https://luran.me/385

4.  https://velog.io/@wooook/REDIS-PUBSUB-%EC%9D%B4%EB%9E%80

5.  https://wondongho.tistory.com/170

6.  https://laracasts.com/series/real-time-laravel-with-socket-io/episodes/1

7.  https://kbseung12345.tistory.com/49

'Framework > Laravel' 카테고리의 다른 글

라라벨 예외처리  (0) 2022.04.01
라라벨 스케줄러 & 크론탭 설정하기  (0) 2021.12.21
쿼리빌더와 엘로퀀트  (0) 2021.11.26
미들웨어  (0) 2021.11.18
라이프사이클  (0) 2021.11.18
Comments