목차
브로드캐스트 서비스 제공자
设置 Redis 连接
建立 Event
设置 api 路由
安装前端脚手架
Redis
安装 laravel-echo-server 订阅 Redis Sub
初始化 laravel-echo-server
启动 laravel-echo-server
测试广播
安装 laravel-echo 的前依赖
.env 파일에서 브로드캐스트 드라이버를 수정해야 합니다. redis: " >Redis 연결 설정

.env 파일에서 브로드캐스트 드라이버를 수정해야 합니다. redis:

npm install && npm run watch
로그인 후 복사
로그인 후 복사

프론트엔드 스캐폴딩 설치🎜🎜🎜rrreee🎜🎜

Redis🎜🎜우리는 Redis 브로드캐스트를 사용하기 때문에 Predis를 설치해야 합니다. 라이브러리: 🎜🎜🎜rrreee🎜🎜
🎜Redis 브로드캐스트는 Redis pub/sub 기능을 사용하여 브로드캐스트합니다. 그러나 메시지를 Websocket 채널에 브로드캐스트하려면 Redis 메시지를 수용할 수 있는 Websocket 서버와 페어링해야 합니다.🎜< /blockquote>
🎜Redis가 이벤트를 브로드캐스트하면 이벤트가 지정된 채널에 게시되고 전달된 데이터는 이벤트 이름, 페이로드 데이터 및 이벤트 소켓 ID를 생성한 사용자가 포함된 JSON 형식 문자열입니다. 🎜

laravel 설치 -echo-server Redis Sub 구독🎜🎜 pusher를 사용하는 경우에는 laravel을 사용하세요. 🎜Redis +socket.io🎜를 사용하는 경우에는 오픈소스 프로젝트 laravel-echo-server . 이제 laravel-echo-server🎜🎜전역 설치🎜🎜🎜rrreee🎜🎜

를 사용하여 laravel을 초기화하겠습니다. -echo- server🎜
🎜rrreee🎜🎜

laravel-echo-server🎜🎜🎜rrreee🎜🎜
  • 시작합니다. 성공적인 시작 후 출력 다음 로그
rrreee

테스트 방송 🎜🎜브라우저에서 실행http://yourhost /api/ship ?id=16🎜🎜🎜rrreee🎜🎜
  • laravel-echo-server 연결에 성공했습니다!

laravel-echo의 종속성을 설치합니다. 🎜🎜프런트 엔드는 laravel-echo 라디오를 듣기 위해 우리가 선택한 기본 구현은 socket.io입니다. 따라서 먼저 package.jsonlaravel-echo를 추가해야 합니다. > class="언어-plaintext 하이라이트-루즈">socket.io의 종속성🎜🎜🎜rrreee🎜🎜🎜resource/js/bootstrap.js를 편집하고 다음 코드를 추가하세요🎜🎜🎜rrreee🎜🎜

测试页面" >API 라우팅 설정🎜
npm install && npm run watch
로그인 후 복사
로그인 후 복사

프론트엔드 스캐폴딩 설치🎜🎜🎜rrreee🎜🎜

Redis🎜🎜우리는 Redis 브로드캐스트를 사용하기 때문에 Predis를 설치해야 합니다. 라이브러리: 🎜🎜🎜rrreee🎜🎜
🎜Redis 브로드캐스트는 Redis pub/sub 기능을 사용하여 브로드캐스트합니다. 그러나 메시지를 Websocket 채널에 브로드캐스트하려면 Redis 메시지를 수용할 수 있는 Websocket 서버와 페어링해야 합니다.🎜< /blockquote>
🎜Redis가 이벤트를 브로드캐스트하면 이벤트가 지정된 채널에 게시되고 전달된 데이터는 이벤트 이름, 페이로드 데이터 및 이벤트 소켓 ID를 생성한 사용자가 포함된 JSON 형식 문자열입니다. 🎜

laravel 설치 -echo-server Redis Sub 구독🎜🎜 pusher를 사용하는 경우에는 laravel을 사용하세요. 🎜Redis +socket.io🎜를 사용하는 경우에는 오픈소스 프로젝트 laravel-echo-server . 이제 laravel-echo-server🎜🎜전역 설치🎜🎜🎜rrreee🎜🎜

를 사용하여 laravel을 초기화하겠습니다. -echo- server🎜
🎜rrreee🎜🎜

laravel-echo-server🎜🎜🎜rrreee🎜🎜
  • 시작합니다. 성공적인 시작 후 출력 다음 로그
rrreee

테스트 방송 🎜🎜브라우저에서 실행http://yourhost /api/ship ?id=16🎜🎜🎜rrreee🎜🎜
  • laravel-echo-server 연결에 성공했습니다!

laravel-echo의 종속성을 설치합니다. 🎜🎜프런트 엔드는 laravel-echo 라디오를 듣기 위해 우리가 선택한 기본 구현은 socket.io입니다. 따라서 먼저 package.jsonlaravel-echo를 추가해야 합니다. > class="언어-plaintext 하이라이트-루즈">socket.io의 종속성🎜🎜🎜rrreee🎜🎜🎜resource/js/bootstrap.js를 편집하고 다음 코드를 추가하세요🎜🎜🎜rrreee🎜🎜

测试页面

基本构建

PHP 프레임워크 Laravel laravel7.0의 브로드캐스트 메커니즘에 대해 이야기해 보겠습니다. 원하는 것은 항상 있습니다!

laravel7.0의 브로드캐스트 메커니즘에 대해 이야기해 보겠습니다. 원하는 것은 항상 있습니다!

Jul 28, 2021 pm 03:57 PM
방송 메커니즘

laravel7.0 브로드캐스트 메커니즘(Redis + 소켓.io)

브로드캐스트 서비스 제공자

이벤트를 브로드캐스팅하기 전에 먼저 AppProvidersBroadcastServiceProvider를 등록해야 합니다. . 새로 설치된 Laravel 애플리케이션에서는 config/app.php 구성 파일을 선택 취소하면 됩니다. 제공자에서 해당 서비스 제공자 앞에 있는 주석 코드> 배열이면 충분합니다. 이 공급자를 사용하면 브로드캐스트 인증 경로 및 콜백을 등록할 수 있습니다.AppProvidersBroadcastServiceProvider。在新安装的 Laravel 应用中,你只需要取消 config/app.php 配置文件中 providers 数组内对应服务提供者之前的注释即可。该提供者允许你注册广播授权路由和回调

相关栏目教程推荐:《laravel教程

设置 Redis 连接

需要修改 .env 文件中的广播驱动为 redis

BROADCAST_DRIVER=redis
로그인 후 복사

建立 Event

php artisan make:event OrderShipped
로그인 후 복사

执行上诉命令之后 app 目录下会出现一个 Events 目录,在该目录下产生了广播事件类 OrderShipped.php。我们要对自动生成的 OrderShipped 类进行以下修改

  • 增加对 ShouldBroadcast 的实现

  • 修改 broadcastOn 方法,使用公共广播通道 orderStatus

  • 自定义广播的消息名(非必须)【默认情况下,Laravel 会使用事件的类名来广播事件,不过,你可以通过在事件中定义 broadcastAs 方法来自定义广播名称:】

  • 修改构造函数

完整修改如下 可直接替换

<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class OrderShipped implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    //可添加任意成员变量
    public $id;
    //事件构造函数
    public function __construct($id)
    {
        $this->id = $id;
    }
    //自定义广播的消息名
    public function broadcastAs()
    {
        return &#39;anyName&#39;;
    }
    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel(&#39;orderStatus&#39;);
    }
}
로그인 후 복사

设置 api 路由

Route::get(&#39;/ship&#39;, function (Request $request) {
    $id = $request->input(&#39;id&#39;);
    broadcast(new OrderShipped($id)); // 触发事件
    return &#39;Order Shipped!&#39;;
});
로그인 후 복사

安装前端脚手架

composer require laravel/uiphp artisan ui vue --auth
로그인 후 복사

Redis

因为咱们使用 Redis 广播,需要安装 Predis 库:

composer require predis/predis
로그인 후 복사

Redis 广播使用 Redis 的 pub/sub 功能进行广播;不过,你需要将其和能够接受 Redis 消息的 Websocket 服务器进行配对以便将消息广播到 Websocket 频道

当 Redis 广播发布事件时,事件将会被发布到指定的频道上,传递的数据是一个 JSON 格式的字符串,其中包含了事件名称、负载数据 data、以及生成事件 socket ID 的用户

安装 laravel-echo-server 订阅 Redis Sub

如果使用 pusher 那么直接使只用 laravel 就可以了,如果使用 Redis + socket.io 则需要使用开源项目 laravel-echo-server 。所以我们现在要使用 laravel-echo-server

全局安装

npm install -g laravel-echo-server
로그인 후 복사

初始化 laravel-echo-server

laravel-echo-server init

// 是否在开发模式下运行此服务器(y/n) 输入y
? Do you want to run this server in development mode? (y/N)// 设置服务器的端口 默认 6001 输入 6001就可以了 或者你想要的
? Which port would you like to serve from? (6001)// 想用的数据库  选择 redis
? Which database would you like to use to store presence channel members? (Use arrow keys)❯ redis
  sqlite

//   这里输入 你的laravel  项目的访问域名
? Enter the host of your Laravel authentication server. (http://localhost)// 选择 网络协议 http
? Will you be serving on http or https? (Use arrow keys)❯ http
  https

// 您想为HTTP API生成客户端ID/密钥吗 N
? Do you want to generate a client ID/Key for HTTP API? (y/N)// 要设置对API的跨域访问吗?(y/n)N
Configuration file saved. Run laravel-echo-server start to run server.

//您希望将此配置另存为什么? (laravel-echo-server.json)回车就行
? What do you want this config to be saved as? (laravel-echo-server.json)
로그인 후 복사

启动 laravel-echo-server

laravel-echo-server start
로그인 후 복사
  • 成功启动后会输出以下日志
L A R A V E L  E C H O  S E R V E R

version 1.6.0

⚠ Starting server in DEV mode...

✔  Running at localhost on port 6001
✔  Channels are ready.
✔  Listening for http events...
✔  Listening for redis events...

Server ready!
로그인 후 복사

测试广播

在浏览器上执行 http://yourhost/api/ship?id=16

Channel: laravel_database_orderStatus
Event: anyName
로그인 후 복사
  • laravel-echo-server 连接成功!

安装 laravel-echo 的前依赖

由于前端使用的是 laravel-echo来收听广播,我们选择的底层实现方式是socket.io。所以首先我们要在package.json中添加 laravel-echosocket.io

관련 열의 권장 튜토리얼: "
laravel 튜토리얼
< /a>》

Redis 연결 설정

.env 파일에서 브로드캐스트 드라이버를 수정해야 합니다. redis:

npm i --save socket.io-client
npm i --save laravel-echo
로그인 후 복사

Create Event🎜🎜🎜
import Echo from "laravel-echo";
window.io = require("socket.io-client");
window.Echo = new Echo({    
broadcaster: "socket.io",    
host: window.location.hostname + ":6001"
});
로그인 후 복사
🎜🎜🎜appeal 명령을 실행한 후 Events 디렉터리가 앱 디렉터리에 나타납니다. 방송 이벤트 클래스 OrderShipped.php가 이 디렉터리에 생성됩니다. 자동으로 생성된 OrderShipped 클래스를 다음과 같이 수정해야 합니다🎜
  • 🎜 ShouldBroadcast 구현 추가🎜
  • 🎜broadcastOn 메소드를 수정하고 공개 방송 채널 orderStatus를 사용하세요🎜
  • 🎜방송의 메시지 이름을 사용자 정의합니다. (🎜필요하지 않습니다🎜) [기본적으로 Laravel은 이벤트의 클래스 이름을 사용하여 이벤트를 방송하지만, event:]🎜
  • 🎜생성자 수정🎜
🎜전체 수정은 다음과 같으며 직접 교체 가능합니다🎜
<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="csrf-token" content="">
    <title>News Room</title>
    <link href="" rel="stylesheet">
</head>

<body>
    <div class="content">
        News Room
    </div>
    <script src=""></script>
    <script>
        Echo.channel("laravel_database_orderStatus") // 广播频道名称
    .listen(".anyName", e => {
        // 消息名称
        console.log(e); // 收到消息进行的操作,参数 e 为所携带的数据
    });
    </script>
</body>

</html>
로그인 후 복사
로그인 후 복사

API 라우팅 설정🎜
npm install && npm run watch
로그인 후 복사
로그인 후 복사

프론트엔드 스캐폴딩 설치🎜🎜🎜rrreee🎜🎜

Redis🎜🎜우리는 Redis 브로드캐스트를 사용하기 때문에 Predis를 설치해야 합니다. 라이브러리: 🎜🎜🎜rrreee🎜🎜
🎜Redis 브로드캐스트는 Redis pub/sub 기능을 사용하여 브로드캐스트합니다. 그러나 메시지를 Websocket 채널에 브로드캐스트하려면 Redis 메시지를 수용할 수 있는 Websocket 서버와 페어링해야 합니다.🎜< /blockquote>
🎜Redis가 이벤트를 브로드캐스트하면 이벤트가 지정된 채널에 게시되고 전달된 데이터는 이벤트 이름, 페이로드 데이터 및 이벤트 소켓 ID를 생성한 사용자가 포함된 JSON 형식 문자열입니다. 🎜

laravel 설치 -echo-server Redis Sub 구독🎜🎜 pusher를 사용하는 경우에는 laravel을 사용하세요. 🎜Redis +socket.io🎜를 사용하는 경우에는 오픈소스 프로젝트 laravel-echo-server . 이제 laravel-echo-server🎜🎜전역 설치🎜🎜🎜rrreee🎜🎜

를 사용하여 laravel을 초기화하겠습니다. -echo- server🎜
🎜rrreee🎜🎜

laravel-echo-server🎜🎜🎜rrreee🎜🎜
  • 시작합니다. 성공적인 시작 후 출력 다음 로그
rrreee

테스트 방송 🎜🎜브라우저에서 실행http://yourhost /api/ship ?id=16🎜🎜🎜rrreee🎜🎜
  • laravel-echo-server 연결에 성공했습니다!

laravel-echo의 종속성을 설치합니다. 🎜🎜프런트 엔드는 laravel-echo</code를 사용하므로 > 라디오를 듣기 위해 우리가 선택한 기본 구현은 <code class="랭귀지-플레인텍스트 하이라이터-루즈">socket.io입니다. 따라서 먼저 package.json</code에 <code class="언어-plaintext 하이라이트-루즈">laravel-echo를 추가해야 합니다. > class="언어-plaintext 하이라이트-루즈">socket.io의 종속성🎜🎜🎜rrreee🎜🎜🎜resource/js/bootstrap.js를 편집하고 다음 코드를 추가하세요🎜🎜🎜rrreee🎜🎜

测试页面

resources/views/ 下建立页面 test.blade.php 内容为

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="csrf-token" content="">
    <title>News Room</title>
    <link href="" rel="stylesheet">
</head>

<body>
    <div class="content">
        News Room
    </div>
    <script src=""></script>
    <script>
        Echo.channel("laravel_database_orderStatus") // 广播频道名称
    .listen(".anyName", e => {
        // 消息名称
        console.log(e); // 收到消息进行的操作,参数 e 为所携带的数据
    });
    </script>
</body>

</html>
로그인 후 복사
로그인 후 복사

js 代码的意思是收听 news 通道内的 News 事件对象,将接收到的事件在控制台打印出来。

基本构建

npm install && npm run watch
로그인 후 복사
로그인 후 복사

相关推荐:最新的五个Laravel视频教程

위 내용은 laravel7.0의 브로드캐스트 메커니즘에 대해 이야기해 보겠습니다. 원하는 것은 항상 있습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel의 구성 요소를 사용하여 재사용 가능한 UI 요소를 만드는 방법은 무엇입니까? Laravel의 구성 요소를 사용하여 재사용 가능한 UI 요소를 만드는 방법은 무엇입니까? Mar 17, 2025 pm 02:47 PM

이 기사는 구성 요소를 사용하여 Laravel에서 재사용 가능한 UI 요소를 작성하고 사용자 정의하여 조직을위한 모범 사례를 제공하고 패키지 강화를 제안합니다.

Laravel에서 Custom Blade Directives를 어떻게 작성하고 사용합니까? Laravel에서 Custom Blade Directives를 어떻게 작성하고 사용합니까? Mar 17, 2025 pm 02:50 PM

이 기사는 Laravel에서 사용자 정의 블레이드 지시문을 만들고 사용하여 템플릿을 향상시키는 것에 대해 설명합니다. 지침 정의, 템플릿에서이를 사용하고 대규모 프로젝트에서 관리하고 개선 된 코드 재사용 성 및 R과 같은 이점을 강조합니다.

클라우드 네이티브 환경에서 Laravel을 사용하기위한 모범 사례는 무엇입니까? 클라우드 네이티브 환경에서 Laravel을 사용하기위한 모범 사례는 무엇입니까? Mar 14, 2025 pm 01:44 PM

이 기사는 클라우드 네이티브 환경에서 Laravel을 배포하기위한 모범 사례에 대해 설명하고 확장 성, 신뢰성 및 보안에 중점을 둡니다. 주요 문제로는 컨테이너화, 마이크로 서비스, 무국적 설계 및 최적화 전략이 포함됩니다.

Laravel에서 사용자 정의 검증 규칙을 어떻게 작성하고 사용하려면? Laravel에서 사용자 정의 검증 규칙을 어떻게 작성하고 사용하려면? Mar 17, 2025 pm 02:38 PM

이 기사에서는 Laravel에서 사용자 정의 검증 규칙을 작성하고 사용하여이를 정의하고 구현하는 단계를 제공합니다. 재사용 성과 특이성과 같은 이점을 강조하고 Laravel의 검증 시스템을 확장하는 방법을 제공합니다.

Laravel의 Artisan 콘솔을 사용하여 일반적인 작업을 자동화하려면 어떻게합니까? Laravel의 Artisan 콘솔을 사용하여 일반적인 작업을 자동화하려면 어떻게합니까? Mar 17, 2025 pm 02:39 PM

Laravel의 Artisan Console은 코드 생성, 마이그레이션 실행 및 스케줄링과 같은 작업을 자동화합니다. 주요 명령에는 Make : Controller, Migrate 및 DB : SEED가 포함됩니다. 특정 요구에 대해 사용자 정의 명령을 작성할 수 있으며 워크 플로 효율 향상.

Laravel의 라우팅 기능을 사용하여 SEO 친화적 인 URL을 만드는 방법은 무엇입니까? Laravel의 라우팅 기능을 사용하여 SEO 친화적 인 URL을 만드는 방법은 무엇입니까? Mar 17, 2025 pm 02:43 PM

이 기사는 Laravel의 라우팅을 사용하여 SEO 친화적 인 URL을 생성, 모범 사례, 표준 URL 및 SEO 최적화 도구를 다루는 것에 대해 설명합니다.

어느 것이 더 낫습니까, 장고 또는 라벨? 어느 것이 더 낫습니까, 장고 또는 라벨? Mar 28, 2025 am 10:41 AM

Django와 Laravel은 모두 풀 스택 프레임 워크입니다. Django는 Python 개발자 및 복잡한 비즈니스 논리에 적합한 반면 Laravel은 PHP 개발자 및 우아한 구문에 적합합니다. 1. Django는 파이썬을 기반으로하며 빠른 개발 및 높은 동시성에 적합한 "배터리 완성"철학을 따릅니다. 2. Laravel은 PHP를 기반으로하며 개발자 경험을 강조하며 중소형 프로젝트에 적합합니다.

Laravel에서 데이터베이스 트랜잭션을 사용하여 데이터 일관성을 보장하는 방법은 무엇입니까? Laravel에서 데이터베이스 트랜잭션을 사용하여 데이터 일관성을 보장하는 방법은 무엇입니까? Mar 17, 2025 pm 02:37 PM

이 기사에서는 Laravel에서 데이터베이스 트랜잭션을 사용하여 데이터 일관성을 유지하고 DB Facade 및 Eloquent 모델, 모범 사례, 예외 처리 및 트랜잭션을 모니터링 및 디버깅하기위한 도구를 자세히 설명하는 데이터 일관성을 유지합니다.

See all articles