>PHP 프레임워크 >Laravel >Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명

Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명

青灯夜游
青灯夜游앞으로
2021-09-28 19:42:233459검색

다음 튜토리얼 칼럼인 Laravel에서는 Laravel-echo-server를 사용하여 실시간 애플리케이션을 구축하는 방법을 소개합니다. 모든 분들께 도움이 되길 바랍니다!

Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명

제 생각에는 실시간 커뮤니케이션이 APP 애플리케이션의 미래입니다. 소켓 서비스는 일반적으로 구현하기 쉽지 않지만 Laravel Echo 서비스는 이러한 상황을 바꿉니다.

이 글에서는 실행 중인 소켓 서비스를 구축하는 방법과 이 서비스에 대한 이벤트를 방송하는 방법을 간략하게 소개하겠습니다. (https://github.com/tlavardure/laravel-echo-server, Laravel 지원 문서: https://learnku.com/docs/laravel/5.6/broadcasting#driver-prerequisites)

완전 무료입니다. 자신의 소켓 서비스를 실행하십시오. Laravel의 기본 통합 푸셔를 사용할 수도 있습니다. 유일한 단점은 제한이 있고 한도를 초과하면 비용을 지불해야 한다는 것입니다. 나는 이런 것들을 직접 구성하는 것을 선호합니다.

요구 사항:

  • Laravel 프레임워크(이 튜토리얼에서는 버전 5.6을 사용합니다.)
  • Redis 서비스
  • 기본 Laravel 지식

laravel-echo-server 설치

먼저 전체적인 그림이 필요합니다 laravel-echo-server를 설치하려면 터미널에 다음 명령만 입력하면 됩니다.

 $ npm install -g laravel-echo-server

설치가 완료된 후 Laravel 애플리케이션을 열거나 새 테스트 프로젝트를 시작하세요:

 $ composer create-project --prefer-dist laravel/laravel echo-test

다음으로 애플리케이션용 Predis를 설치하세요.

 $ composer require predis/predis

설치가 완료된 후 프로젝트 루트 디렉터리로 전환하고 소켓 서비스:

 $ laravel-echo-server init

이 명령을 실행하면 소켓 서비스에 대한 일부 구성 정보를 묻는 메시지가 표시됩니다. 상황에 따라 입력할 수 있습니다.

Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명

프로덕션 환경에서는 어떤 경우에도 이를 기억하세요. 사용할 때는 개발자 모드를 꺼야 합니다.

서비스를 시작하고 제대로 실행되는지 확인할 수 있습니다:

$ laravel-echo-server start

출력은 다음과 같습니다:

Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명

Laravel Echo 서버가 제대로 작동하도록 Laravel 구성

Open your config/app.php 파일을 삭제하고 Providers 배열에서 BroadcastServiceProvider 주석을 제거하세요. config/app.php 文件并且取消 BroadcastServiceProvider 在这个 Providers 数组中的注释:

AppProvidersBroadcastServiceProvider::class,

这个 Provider 将会启动广播路由(你或许已经在 routes/channels.php 文件里面已经看到了)

打开 .env  文件,修改  BROADCAST_DRIVER 的值为你在 laravel-echo-server 初始化时定义的值(Redis 或者 Log)。在本教程中我们将使用 Redis 驱动程序。
同时修改  QUEUE_DRIVER 为你喜欢的任何队列驱动程序,在这个示例中你可以轻松的将其更改为 Redis 驱动程序,因为你在前面已经安装并且在运行了。

接下来我们必须安装 Socket.io 客户端和 Laravel-Echo 包,你可以通过以下操作来安装:

$ npm install --save socket.io-client
$ npm install --save laravel-echo

(在运行这个之前你可能需要运行  npm install  来安装 Laravel 及相关依赖)

接下来打开  resources/assets/js/bootstrap.js  文件, 或者你自己的 引入所有 JS 基础代码的 JS 文件。

现在我们要添加启动 Echo 基础服务的代码:

import Echo from 'laravel-echo'

window.io = require('socket.io-client');
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
});

现在我们准备在频道上监听消息了!我会在本教程中解释怎么开放频道,接下来开始收听我们的第一个频道:

window.Echo.channel('test-event')
    .listen('ExampleEvent', (e) => {
        console.log(e);
    });

我们通过 JS 代码告诉程序我们订阅了名为 ’test-event' 的频道, 并监听 ‘ExampleEvent’ 事件 (这是事件的类名,你也可以根据你的需要自定义)。

让我们创建这个事件类:

$ php artisan make:event ExampleEvent

这将会在 App/Events 目录下面创建一个叫做 ExampleEvent.php 的事件类
让我们对这个事件类稍作调整使得它能够在我们的 Socket 服务 中能够正常运行,首先确保你的事件类继承于 ShouldBroadcast 接口,就像下面这样;

class ExampleEvent implements ShouldBroadcast

接下来向下滚动找到  broadcastOn  函数,修改它使得我们能够在正确的频道上进行广播:

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

让我们在下面新建一个函数,这样我们才能有一些实例数据:

public function broadcastWith()
{
    return [
        'data' => 'key'
    ];
}

这个函数在事件被调用时调用,它将会把数据返回到你的 Socket 服务中。

现在让我们开始尝试它吧!打开你的 routes/web.php

AppProvidersBroadcastServiceProvider::class,🎜
🎜이 공급자가 시작됩니다. 라우팅(routes/channels.php 파일에서 본 적이 있을 수 있음) 🎜🎜.env 파일을 열고 BROADCAST_DRIVER 값을 수정하세요. laravel-echo-server가 초기화될 때 정의한 값(Redis 또는 Log) 이 튜토리얼에서는 Redis 드라이버를 사용합니다.
또한 QUEUE_DRIVER를 원하는 큐 드라이버로 수정하세요. 이 예에서는 Redis 드라이버가 이미 설치되어 실행 중이므로 쉽게 변경할 수 있습니다. 🎜🎜다음으로 Socket.io 클라이언트와 Laravel-Echo 패키지를 설치해야 합니다. 다음을 수행하여 설치할 수 있습니다: 🎜
Route::get('test-broadcast', function(){
    broadcast(new \App\Events\ExampleEvent);
});
🎜 (실행하기 전에 Laravel을 설치하려면 npm install을 실행해야 할 수도 있습니다) 이 및 관련 종속성)🎜🎜다음으로 resources/assets/js/bootstrap.js 파일을 열거나 모든 JS 기본 코드를 소개하는 자체 JS 파일을 엽니다. 🎜🎜이제 Echo 베이스 서비스를 시작하는 코드를 추가하겠습니다. 🎜
$ php artisan queue:listen --tries=1
🎜이제 채널의 메시지를 들을 준비가 되었습니다! 이 튜토리얼에서는 채널을 여는 방법을 설명하고 첫 번째 채널을 듣기 시작합니다. 🎜
#!/usr/bin/env bash

laravel-echo-server  start
🎜 JS 코드를 통해 'test-event'라는 채널을 구독하고 'ExampleEvent'를 듣는다는 것을 프로그램에 알립니다. ' 이벤트(이것은 이벤트의 클래스 이름이며 필요에 따라 사용자 정의할 수도 있습니다). 🎜🎜이 이벤트 클래스를 만들어 보겠습니다.🎜rrreee🎜이렇게 하면 App/Events 디렉토리 아래에 ExampleEvent.php라는 이벤트 클래스가 생성됩니다.
이 이벤트를 약간 조정해 보겠습니다. 소켓 서비스에서 정상적으로 실행될 수 있도록 먼저 이벤트 클래스가 다음과 같이 ShouldBroadcast 인터페이스에서 상속되는지 확인하세요. 🎜다음으로 아래로 스크롤하여 broadcastOn 함수를 찾아 올바른 채널에서 방송할 수 있도록 수정하세요. 🎜rrreee🎜 인스턴스 데이터를 갖도록 아래에 새 함수를 만들어 보겠습니다. 🎜rrreee🎜 이 함수는 이벤트가 호출될 때 호출되며 소켓 서비스에 데이터를 반환합니다. 🎜🎜이제 시작해 보겠습니다! routes/web.php 파일을 열고 테스트 경로를 추가하세요: 🎜
Route::get('test-broadcast', function(){
    broadcast(new \App\Events\ExampleEvent);
});

(有很多种方式来广播 ExampleEvent  类 ,在这个示例中我使用 Laravel 提供的 broadcast() 助手,在我看来这是最简洁的方式)

启动队列监听:

$ php artisan queue:listen --tries=1

浏览器打开一个包含 JS 文件的页面(可以是 Laravel 默认的欢迎页面),这是第一个页面,请不要关闭次页面,我们已经在此页面上订阅了 Socket 服务。

接下来打开另一个页面访问  /test-broadcast ,这将会返回一个空白页面,但是它将会通过你的 ExampleEvent  类广播到你的 Socket 服务上。返回到我们的第一个页面,打开浏览器控制台,应该可以看到类似信息:

Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명

正如你所看到的,数据通过这种形式展示在我们的客户端。你能输入任意数据通过你的  ExampleEvent 类来广播他们,这些数据可以是新闻更新,页面更新,总浏览量或者更多。

因为我们有在 laravel-echo-server 配置中有设置开发者模式,所以你能看到 Socket 服务上的所有基本信息:

Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명

现在你已经安装并运行了一个基本的 Socket 服务!但这并不是全部,你可以根据这个来做更多的事情,比如为单个用户提供认证的私有渠道。(当您想广播订单更新或私人消息时)

要做到这一点,我建议你去查看 Laravel 文档了解更多相关的内容。通过这个主题你能做很多事情,让你的应用程序变得更加神奇。你可以在这里找到相应的文档:

Broadcasting - Laravel - The PHP framework for web artisans.laravel.com

其他: 在生产环境中运行

正如我之前所说,你必须在 laravel-echo-server.json 配置文件中禁用开发者模式。 当然在服务器上你可以忽略这个文件,重新初始化它,因为你的主机可能和本地不同。

你还需要保持你的 Socket 服务在你的生产环境中运行,你可以用 Supervisor ,但是我通常使用 PM2  ,它可以方便快速的管理你的服务。 (http://pm2.keymetrics.io/)

这里是我使用 PM2 的 Socket.sh 基本配置:

#!/usr/bin/env bash

laravel-echo-server  start

安装了 PM2 后, 你可以通过 pm2 start socket.sh 命令来启动脚本,运行你的 Socket 服务。

我希望它能够帮助到你。 这篇文章主要介绍的是一些基础知识,接下来我们会继续讨论广播路由的授权和不同的广播频道。

感谢你的阅读!

英文原文地址:https://medium.com/@dennissmink/laravel-echo-server-how-to-24d5778ece8b

译文地址:https://learnku.com/laravel/t/13101/using-laravel-echo-server-to-build-real-time-applications

更多编程相关知识,请访问:编程视频!!

위 내용은 Laravel-echo-server가 실시간 애플리케이션을 구축하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제