首页 > 其他分享 >26. Laravel 广播 – 公有广播

26. Laravel 广播 – 公有广播

时间:2023-02-28 13:58:27浏览次数:51  
标签:Laravel laravel 26 websocket window echo 广播 npm

Laravel 广播 – 公有广播

配套视频地址:https://www.bilibili.com/video/av78577184

配置

配置驱动 "pusher", "redis", "log", "null"          // .env
npm install --save socket.io-client |  echo 'websocket 客户端'
npm install --save laravel-echo     |  echo 'websocket 客户端封装'
npm install -g laravel-echo-server  |  echo 'websocket 服务端'
npm install                         |  echo '安装所有其他依赖'
npm run watch                        |  echo '监控文件变化编译前端资源'
laravel-echo-server init             |  echo '初始化 websocket 服务端'
laravel-echo-server start            |  echo '启动 websocket 服务端'

初始化 websocket 客户端

// bootstrap.js  最下
import Echo from "laravel-echo"

window.io = require('socket.io-client');

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

事件

<?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 Free implements ShouldBroadcast           // 1. 事件是要广播出去的
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $msg;

    public function __construct($msg)           // 2. 广播出去的内容
    {
        $this->msg = $msg;
    }

    public function broadcastOn()               // 3. 对哪些频道进行广播
    {
        return [new Channel('countryside'), new Channel('a')];
    }
}

设置客户端监听广播

// bootstrap.js 最下 查看config/database.php redis前缀
window.Echo.channel('laravel_database_countryside')
    .listen('Free', (e) => {
        console.log(e);
    });

触发事件,广播开始

Route::get('/event', function () {
    event(new \App\Events\Free('免缴农业税啦'));
});

app.js 引用

// welcome.blade.php
<div id="app"></div>
<script src="js/app.js"></script>

标签:Laravel,laravel,26,websocket,window,echo,广播,npm
From: https://www.cnblogs.com/fuqian/p/17163952.html

相关文章

  • 25. Laravel 事件
    Laravel事件配套视频地址:https://www.bilibili.com/video/av77534496目的:解耦。简介:监听器监听到事件的发生,会执行handler方法。//原始代码publicfunctionreg......
  • 24. Laravel 缓存
    Laravel缓存配套视频地址:https://www.bilibili.com/video/av77035719配置与准备配置文件:config/cache.php,.env可配置内容:1.使用哪个驱动2.驱动的配置......
  • 28. Laravel 内置聊天室
    Laravel内置聊天室配套视频地址:https://www.bilibili.com/video/av80196918配置打开config/app.php中BroadcastServiceProvider注释,即注册广播授权路由。在.e......
  • 27. Laravel 广播 – 私有频道
    Laravel内置聊天室配套视频地址:https://www.bilibili.com/video/av80196918配置打开config/app.php中BroadcastServiceProvider注释,即注册广播授权路由。在.e......
  • 30. Laravel 开发第三方包
    Laravel开发第三方包使用Contracts代替Facades,因为扩展包不能访问Laravel提供的所有测试Facades的辅助函数。自动发现和注册Facades"extra":{"laravel......
  • 29. Laravel 广播系统补充
    Laravel广播系统补充配套视频地址:https://www.bilibili.com/video/av80196918?p=2设置广播名称//默认是事件的类名publicfunctionbroadcastAs(){return's......
  • Laravel 最佳实践
    Laravel最佳实践翻译来源:https://github.com/alexeymezenin/laravel-best-practices单一职责原则不要这样做:publicfunctiongetFullNameAttribute(){if(aut......
  • Laravel 核心概念
    Laravel核心概念配套视频地址:https://www.bilibili.com/video/av76060293核心概念简介、服务容器、服务提供者、facade、contract、生命周期。简介我叫Laravel。......
  • 18. Laravel 模型关系:远程一对一
    Laravel模型关系:远程一对一配套视频地址:https://www.bilibili.com/video/av73028135?p=5一个帖子属于一个作者,该作者就读一所学校。帖子可通过作者访问作者所在的学校......
  • 17. Laravel 模型关系:多对多
    Laravel模型关系:多对多配套视频地址:https://www.bilibili.com/video/av73028135?p=4多对多:一个人可以扮演多个角色,一个角色可以被多个人扮演。数据结构#users:id,......