롸?
라라벨 브로드캐스팅 & 라라벨 에코 서버 본문
라라벨의 브로드캐스팅과 에코 서버에 대한 이해를 위해 작성
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
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
'Framework > Laravel' 카테고리의 다른 글
라라벨 예외처리 (0) | 2022.04.01 |
---|---|
라라벨 스케줄러 & 크론탭 설정하기 (0) | 2021.12.21 |
쿼리빌더와 엘로퀀트 (0) | 2021.11.26 |
미들웨어 (0) | 2021.11.18 |
라이프사이클 (0) | 2021.11.18 |