> 백엔드 개발 > PHP 튜토리얼 > Laravel 방송의 작동 방식

Laravel 방송의 작동 방식

尊渡假赌尊渡假赌尊渡假赌
풀어 주다: 2025-03-05 09:27:14
원래의
131명이 탐색했습니다.

오늘날 우리는 Laravel 웹 프레임 워크에서 방송의 개념을 탐구 할 것입니다. 서버 측에서 어떤 일이 발생하면 클라이언트 측에 알림을 보낼 수 있습니다. 이 기사에서는 제 3 자 푸셔 라이브러리를 사용하여 클라이언트 측에 알림을 보내려고합니다.

Laravel의 서버에서 어떤 일이 발생할 때 서버에서 클라이언트로 알림을 보내고 싶다면 방송 기능을 찾고 있습니다. 예를 들어, 시스템 사용자가 서로 메시지를 보낼 수있는 메시지를 구현했다고 가정 해 봅시다. 이제 사용자 A가 사용자 B에게 메시지를 보내면 사용자 B를 실시간으로 알려고합니다. 새로운 메시지에 대해 사용자 B에 알려주는 팝업 또는 경고 상자를 표시 할 수 있습니다!

Laravel에서 방송 개념을 걸을 수있는 완벽한 용도입니다. 이것이 우리 가이 기사에서 구현하는 것입니다.

서버가 클라이언트에 알림을 어떻게 보낼 수 있는지 궁금하다면, 후드 아래에 소켓을 사용하여 그에 대한 알림을 사용하는 방법이 있다면,이를 달성 할 수 있습니다. 실제 구현에 더 깊이 빠져들기 전에 소켓의 기본 흐름을 이해해 보겠습니다.

첫째, 웹 소켓 프로토콜을 지원하는 서버가 필요하고 클라이언트가 웹 소켓 연결을 설정할 수 있도록 허용합니다.

자체 서버를 구현하거나 푸셔와 같은 타사 서비스를 사용할 수 있습니다. 우리는이 기사에서 후자를 선호합니다.
  • 클라이언트는 웹 소켓 서버에 대한 웹 소켓 연결을 시작하고 성공적인 연결시 고유 식별자를 수신합니다.
  • 일단 연결이 성공하면 클라이언트가 이벤트를 받기를 원하는 특정 채널에 가입합니다.
  • 마지막으로, 클라이언트가 참조 할 수 있습니다. 서버 측면, 특정 이벤트가 발생하면 채널 이름 및 이벤트 이름을 제공하여 웹 소켓 서버에 알려줍니다.
  • 및 마지막으로 Web-Socket 서버는 해당 특정 채널에서 등록 된 클라이언트에게 해당 이벤트를 방송합니다.
  • 단일 GO에서 너무 많이 보이는 경우 걱정하지 마십시오. 우리 가이 기사를 통해 이동할 때 당신은 그것의 교수형을 얻게 될 것입니다.
  • 방송 구성 파일
  • 다음, 다음, config/broadcasting.php 에서 기본 브로드 캐스트 구성 파일을 살펴 보겠습니다. 로그 어댑터를 사용합니다. 물론, 푸셔
  • 어댑터를 기본 브로드 캐스트 드라이버로 사용하는 경우
  • 볼 수 있듯이 기본 브로드 캐스트 드라이버를 메시지 테이블로 변경했습니다. 마이그레이션 파일 데이터베이스/마이그레이션/XXXX_XX_XXXXXXX_CREATE_MESSAGES_TALE.PHP
마이그레이션 명령을 실행하기 전에.
<?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은 그에 따라 반응하고 필요한 조치를 취합니다.

이벤트가 일반 이벤트 인 경우 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를 기반으로 다른 채널 이름을 가질 수 있습니다. 이제

메소드를 테스트하기 위해 이동할 때이 페이지를 열어 두자. 다른 브라우저를 사용하려면 해당 페이지에 액세스하려면 로그인해야합니다.

http : // http : // your-laravel-site-domain/message/send page를 열 자마자 http : // http : // http : // index에서 경고 메시지를 볼 수 있어야합니다.

당신이 볼 수 있듯이,

채널의 푸셔 웹 소켓 서버로부터

이벤트를 방금 받았음을 알 수 있습니다. 실제로 푸셔 엔드에서 무슨 일이 일어나고 있는지 알 수 있습니다. 푸셔 계정으로 이동하여 응용 프로그램으로 이동하십시오. 디버그

콘솔 아래에서 메시지가 기록되는 것을 볼 수 있어야합니다.

그리고이 기사의 끝으로 우리를 데려옵니다! 바라건대, 내가 아는 한 최선을 다해 물건을 단순화하려고했기 때문에 그것은 너무 많지 않았습니다. Pusher.logToConsole

결론

오늘, 우리는 Laravel의 가장 많이 논의 된 특징 중 하나 인 브로드 캐스트를 거쳤습니다. 웹 소켓을 사용하여 실시간 알림을 보낼 수 있습니다. 이 기사를 통해, 우리는 앞서 언급 한 개념을 보여주는 실제 사례를 만들었습니다.

위 내용은 Laravel 방송의 작동 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿