将心比心,方得人心~

laravel 广播

周洲 2021-06-01 16:04:56

config/app.php 取消以下代码的注释

 App\Providers\BroadcastServiceProvider::class,

.env配置

BROADCAST_DRIVER=redis
QUEUE_CONNECTION=redis


database.php类phpredis 改为 predis


如果你使用 Redis 广播器,请通过 PECL 安装 redis 扩展和安装 Predis 库:

composer require predis/predis

引入 Socket.IO JavaScript 客户端库

npm install --save socket.io-client@2.*

客户端封装

npm install --save laravel-echo

服务端

npm install -g laravel-echo-server

安装依赖

npm install

resources/js/bootstrap.js内实例化 Echo 时指定 socket.io 连接器和 host,添加以下代码:

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

resources/js/bootstrap.js内监听事件广播

window.Echo.channel(`laravel_database_push`)
    .listen('.push.message', (e) => {
        console.log(e);
    });

生成事件

php artisan make:event PushMsgEvent

代码

<?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 PushMsgEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $eventName;
    public $msg = '';
    /**
     * Create a new event instance.
     *
     * @return void
     */
public function __construct($eventName,$msg) { $this->eventName = $eventName; $this->msg = $msg; } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new Channel($this->eventName); } // 自定义事件名称 public function broadcastAs() { return 'push.message';
} }

web.php配置路由

Route::get('/event', function () {
    event(new \App\Events\PushMsgEvent('push','这是一条消息'));
});


在laravel初始化welcome.balde.php模板head之间添加

<script src="js/app.js"></script>

初始化服务端

laravel-echo-server init


启动redis

执行下载的文件 redis-server.exe


执行package.json中的script脚本

npm run dev

启动队列处理器

php artisan queue:work

启动服务端

laravel-echo-server start


最后1、访问laravel项目首页也就是welcome.blade.php页面;2、访问路由event;3、回到首页查看console输出。






打赏

『微信打赏』

Tag标签laravel  广播 

上一篇: 监听查询事件

下一篇: laravel 消息通知

我是有底线的