오늘날 우리는 Laravel 웹 프레임 워크에서 방송의 개념을 탐구 할 것입니다. 서버 측에서 어떤 일이 발생하면 클라이언트 측에 알림을 보낼 수 있습니다. 이 기사에서는 제 3 자 푸셔 라이브러리를 사용하여 클라이언트 측에 알림을 보내려고합니다.
Laravel의 서버에서 어떤 일이 발생할 때 서버에서 클라이언트로 알림을 보내고 싶다면 방송 기능을 찾고 있습니다. 예를 들어, 시스템 사용자가 서로 메시지를 보낼 수있는 메시지를 구현했다고 가정 해 봅시다. 이제 사용자 A가 사용자 B에게 메시지를 보내면 사용자 B를 실시간으로 알려고합니다. 새로운 메시지에 대해 사용자 B에 알려주는 팝업 또는 경고 상자를 표시 할 수 있습니다!
Laravel에서 방송 개념을 걸을 수있는 완벽한 용도입니다. 이것이 우리 가이 기사에서 구현하는 것입니다.
서버가 클라이언트에 알림을 어떻게 보낼 수 있는지 궁금하다면, 후드 아래에 소켓을 사용하여 그에 대한 알림을 사용하는 방법이 있다면,이를 달성 할 수 있습니다. 실제 구현에 더 깊이 빠져들기 전에 소켓의 기본 흐름을 이해해 보겠습니다.
첫째, 웹 소켓 프로토콜을 지원하는 서버가 필요하고 클라이언트가 웹 소켓 연결을 설정할 수 있도록 허용합니다.
자체 서버를 구현하거나 푸셔와 같은 타사 서비스를 사용할 수 있습니다. 우리는이 기사에서 후자를 선호합니다.
<?php<br><br>return [<br><br> /*<br> |--------------------------------------------------------------------------<br> | Default Broadcaster<br> |--------------------------------------------------------------------------<br> |<br> | This option controls the default broadcaster that will be used by the<br> | framework when an event needs to be broadcast. You may set this to<br> | any of the connections defined in the "connections" array below.<br> |<br> | Supported: "pusher", "redis", "log", "null"<br> |<br> */<br><br> 'default' => env('BROADCAST_DRIVER', 'null'),<br><br> /*<br> |--------------------------------------------------------------------------<br> | Broadcast Connections<br> |--------------------------------------------------------------------------<br> |<br> | Here you may define all of the broadcast connections that will be used<br> | to broadcast events to other systems or over websockets. Samples of<br> | each available type of connection are provided inside this array.<br> |<br> */<br><br> 'connections' => [<br><br> 'pusher' => [<br> 'driver' => 'pusher',<br> 'key' => env('PUSHER_APP_KEY'),<br> 'secret' => env('PUSHER_APP_SECRET'),<br> 'app_id' => env('PUSHER_APP_ID'),<br> 'options' => [<br> 'cluster' => env('PUSHER_APP_CLUSTER'),<br> 'useTLS' => true,<br> ],<br> ],<br><br> 'redis' => [<br> 'driver' => 'redis',<br> 'connection' => 'default',<br> ],<br><br> 'log' => [<br> 'driver' => 'log',<br> ],<br><br> 'null' => [<br> 'driver' => 'null',<br> ],<br><br> ],<br><br>];<br>이벤트 클래스 만들기
이벤트가 일반 이벤트 인 경우 Laravel은 관련 청취자 클래스를 호출합니다. 반면에, 이벤트가 브로드 캐스트 유형 인 경우 Laravel은 이벤트를
config/broadcasting.php 파일로 구성된 웹 소켓 서버로 보냅니다. 우리는 우리의 예에서 Pusher 서비스를 사용하면 푸셔 서버에 이벤트를 보자. 어댑터 및 기타 필요한 푸셔 관련 정보. 더 이동하면 private
user를 구독합니다. 앞에서 논의한 것처럼 클라이언트는 개인 채널에 가입하기 전에 스스로 인증해야합니다. 따라서 <code> echo <p> 객체는 필요한 매개 변수로 백그라운드에서 XHR을 전송하여 필요한 인증을 수행합니다. 마지막으로, Laravel은 <code> 사용자를 찾으려고 시도하고 {user_id} Route를 찾으려고, <p> rounes/channels.php <lo> 파일에서 정의한 경로와 일치해야합니다. </lo></p>
모든 것이 잘 진행되면 푸셔 웹 소켓 서버와 함께 웹 소켓 연결을 열어야합니다. 이제부터 우리는이 채널에서 모든 들어오는 이벤트를받을 수 있습니다. 우리의 경우, 우리는 newmessagenotification 이벤트를 듣고 싶습니다. 따라서 <code> <coco>private</coco>
객체의 듣기 메소드를 사용하여이를 달성했습니다. 상황을 간단하게 유지하기 위해 푸셔 서버에서받은 메시지를 알 수 있습니다. <code>user.{USER_ID}
는 웹 소켓 서버에서 이벤트를 수신하기위한 설정이었습니다. 다음으로, 방송 이벤트를 제기하는 컨트롤러 파일에서 보내기 메소드를 살펴볼 것입니다. <code>Echo
send 메서드의 코드를 빠르게 가져 가자. 우리의 경우, 우리는 새로운 메시지를받을 때 로그인 한 사용자에게 알릴 것입니다. 그래서 우리는 <code> 메소드를 보내는 동작을 모방하려고 노력했습니다. <code>user.{USER_ID}
다음은 event <strong> 헬퍼 함수를 사용하여 <code> newmessagenotification
이벤트를 높였습니다. newMessAgenotification 이벤트는 <code>의 <codroadcastnow> 유형이기 때문에 Laravel은 config/broadcasting.php </codroadcastnow>
newMessAgenotification 이벤트를 <code> 사용자의 구성된 웹 소켓 서버로 브로드 캐스트합니다. 우리의 경우, 이벤트는 채널의 Pusher Web-Socket Server로 브로드 캐스트됩니다. 수신자 사용자의 ID가 <p> 인 경우 이벤트가 <code>user.{USER_ID}
채널을 통해 방송됩니다. 1
앞에서 논의한 것처럼 이미이 채널에서 이벤트를 듣는 설정이 있으므로이 이벤트를 수신 할 수 있어야하며 경고 상자가 사용자에게 표시 될 수 있어야합니다. 우리가 지금까지 구축 한 것입니다. user.1
브라우저에서 URL https : // your-laravel-site-domain/message/index를 엽니 다. 아직 로그인하지 않은 경우 로그인 화면으로 리디렉션됩니다. 로그인 한 후에는 우리가 이전에 정의한 방송보기를 볼 수 있어야합니다. Pusher Client Library에서 제공 한 설정을 활성화 했으므로 디버깅 목적으로 브라우저 콘솔의 모든 것을 기록합니다. http : // laravel-site-domain/message/index page에 액세스 할 때 콘솔에 로그인하는 내용을 보자. 푸셔 웹 소켓 서버와 웹 소켓 연결을 열고 개인 채널에서 이벤트를 듣기 위해 가입했다. 물론, 귀하의 경우 로그인 한 사용자의 ID를 기반으로 다른 채널 이름을 가질 수 있습니다. 이제
메소드를 테스트하기 위해 이동할 때이 페이지를 열어 두자. 다른 브라우저를 사용하려면 해당 페이지에 액세스하려면 로그인해야합니다.당신이 볼 수 있듯이,
채널의 푸셔 웹 소켓 서버로부터 이벤트를 방금 받았음을 알 수 있습니다. 실제로 푸셔 엔드에서 무슨 일이 일어나고 있는지 알 수 있습니다. 푸셔 계정으로 이동하여 응용 프로그램으로 이동하십시오.
그리고이 기사의 끝으로 우리를 데려옵니다! 바라건대, 내가 아는 한 최선을 다해 물건을 단순화하려고했기 때문에 그것은 너무 많지 않았습니다. Pusher.logToConsole
오늘, 우리는 Laravel의 가장 많이 논의 된 특징 중 하나 인 브로드 캐스트를 거쳤습니다. 웹 소켓을 사용하여 실시간 알림을 보낼 수 있습니다. 이 기사를 통해, 우리는 앞서 언급 한 개념을 보여주는 실제 사례를 만들었습니다.
위 내용은 Laravel 방송의 작동 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!