>  기사  >  PHP 프레임워크  >  Laravel을 사용한 WebSocket 개발: 실시간 통신을 위한 솔루션

Laravel을 사용한 WebSocket 개발: 실시간 통신을 위한 솔루션

WBOY
WBOY원래의
2023-08-13 13:46:552764검색

Laravel을 사용한 WebSocket 개발: 실시간 통신을 위한 솔루션

Laravel을 사용한 WebSockets 개발: 실시간 통신을 위한 솔루션

인용문:

웹 애플리케이션이 발전함에 따라 실시간 통신이 점점 더 중요해지고 있습니다. 전통적인 HTTP 요청-응답 모델은 애플리케이션의 실시간 특성을 제한하므로 사람들은 새로운 솔루션을 찾기 시작했습니다. WebSockets 기술은 클라이언트와 서버 간의 지속적인 연결을 설정하여 실시간 통신 기능을 실현할 수 있는 방법을 제공합니다. 이 글에서는 Laravel 프레임워크를 사용하여 WebSocket 기반의 실시간 통신 애플리케이션을 쉽게 개발하는 방법을 소개합니다.

WebSocket이란 무엇인가요?

WebSocket은 클라이언트와 서버 간에 지속적인 양방향 연결을 설정하는 통신 프로토콜입니다. 기존 HTTP 요청-응답 모델과 달리 WebSocket을 사용하면 서버와 클라이언트가 실시간으로 데이터를 교환할 수 있습니다. WebSocket 통신은 전이중 방식입니다. 즉, 서버와 클라이언트가 동시에 데이터를 보내고 받을 수 있습니다.

라라벨을 선택하는 이유는 무엇인가요?

Laravel은 웹 애플리케이션을 보다 쉽고 효율적으로 구축할 수 있도록 많은 강력한 기능과 도구를 제공하는 인기 있는 PHP 개발 프레임워크입니다. Laravel 프레임워크는 실시간 통신을 위한 우수한 지원을 제공하며 Laravel Echo 및 Laravel WebSockets 확장 패키지를 사용하면 WebSockets 기반 애플리케이션을 쉽고 간단하게 개발할 수 있습니다.

Laravel WebSockets 사용 시작:

먼저 Laravel WebSockets 확장 패키지를 설치해야 합니다. 터미널에서 다음 명령을 실행합니다.

composer require beyondcode/laravel-websockets

설치가 완료된 후 다음 명령을 실행하여 구성 파일을 게시합니다.

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"

다음으로 WebSockets 관련 데이터베이스 마이그레이션 파일을 생성해야 합니다.

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"
php artisan migrate

Configure Laravel WebSockets :

Laravel 구성 파일 "config/websockets.php"를 열면 청취 주소 및 포트, 인증 및 권한 부여 등과 같은 일부 WebSocket 관련 구성 옵션을 설정할 수 있습니다.

이벤트 생성:

Laravel에서는 이벤트를 사용하여 실시간 통신을 처리합니다. 먼저 이벤트 클래스를 만들어야 합니다. 다음 명령을 실행하여 "NewMessage" 이벤트라는 클래스를 생성합니다.

php artisan make:event NewMessage

새로 생성된 이벤트 클래스 "app/Events/NewMessage.php"를 열면 이벤트에 대한 몇 가지 속성과 메서드를 정의할 수 있습니다. 예를 들어, 브로드캐스트하려는 메시지의 내용을 저장하는 "message"라는 속성을 이벤트에 추가할 수 있습니다.

public $message;

public function __construct($message)
{
    $this->message = $message;
}

다음 단계는 이벤트 브로드캐스터를 만드는 것입니다. 다음 명령을 실행하여 "NewMessageBroadcast"라는 브로드캐스터 클래스를 생성합니다.

php artisan make:channel NewMessageBroadcast

새로 생성된 브로드캐스터 클래스 "app/Broadcasting/NewMessageBroadcast.php"를 엽니다. 브로드캐스터가 이벤트 브로드캐스팅을 처리할 메서드를 정의해야 합니다.

public function broadcastOn()
{
    return new Channel('new-message');
}

public function broadcastAs()
{
    return 'message';
}

브로드캐스트 드라이버 구성:

Laravel 구성 파일 "config/broadcasting.php"를 엽니다. 브로드캐스트 드라이버 유형을 "pusher"로 설정하고 관련 구성 옵션을 제공할 수 있습니다.

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'cluster' => env('PUSHER_APP_CLUSTER'),
        'useTLS' => true,
    ],
],

구성이 완료되면 Pusher를 브로드캐스트 드라이버로 사용할 수 있습니다.

이벤트 처리:

우리 애플리케이션에서는 컨트롤러나 모델에서 이벤트를 트리거하고 브로드캐스트 클래스를 사용하여 보낼 수 있습니다. 예는 다음과 같습니다.

use AppEventsNewMessage;
use IlluminateHttpRequest;

public function sendMessage(Request $request)
{
    // 处理接收到的消息
    $message = $request->input('message');

    // 触发事件并广播
    event(new NewMessage($message));

    return response()->json(['message' => 'Message sent.']);
}

위 코드에서는 먼저 요청에서 받은 메시지의 내용을 가져옵니다. 그런 다음 Laravel의 이벤트 클래스 "event"를 사용하여 사용자 정의 이벤트 "NewMessage"를 트리거합니다. 마지막으로 메시지가 전송되었음을 나타내는 JSON 응답을 반환합니다.

방송 듣기:

다음으로 방송을 듣는 프런트엔드 스크립트를 만들어야 합니다. HTML 코드에 다음 코드를 추가하세요:

<script src="https://cdn.jsdelivr.net/npm/laravel-echo@^1.10.0/dist/echo.min.js"></script>
<script src="/js/app.js"></script>
<script>
    // 与WebSockets服务器建立连接
    const echo = new Echo({
        broadcaster: 'pusher',
        key: 'your-pusher-key',
        cluster: 'your-pusher-cluster',
        encrypted: true,
    });

    // 监听来自"new-message"频道的消息
    echo.channel('new-message')
        .listen('.message', (message) => {
            console.log(message);
        });
</script>

위 코드에서는 먼저 Laravel Echo와 프런트엔드 JavaScript 파일을 소개했습니다. 그런 다음 앞서 구성한 Pusher 키와 클러스터 정보를 사용하여 Echo 인스턴스를 초기화했습니다. 마지막으로 "echo.channel()" 메서드를 사용하여 "new-message"라는 채널을 수신하고 ".listen()" 메서드를 사용하여 해당 채널의 메시지를 처리합니다.

결론:

WebSocket 개발에 Laravel을 사용하는 것은 실시간 통신을 위한 이상적인 솔루션입니다. Laravel에서 제공하는 Laravel Echo 및 Laravel WebSockets 확장 패키지를 사용하면 WebSockets 기반 애플리케이션을 간단하고 효율적으로 구축할 수 있습니다. 이 기사의 단계와 샘플 코드를 따르면 강력한 실시간 통신 애플리케이션을 빠르게 구축할 수 있습니다. 귀하의 개발 과정이 성공하기를 바랍니다!

위 내용은 Laravel을 사용한 WebSocket 개발: 실시간 통신을 위한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.