laravel 广播

栏目: 编程语言 · PHP · 发布时间: 5年前

内容简介:广播系统的目的是用于实现当服务端完成某种特定功能后向客户端推送消息的功能,比如服务器处理完成某项工作后向客户端发送结果广播流程图

laravel广播

广播系统的目的是用于实现当服务端完成某种特定功能后向客户端推送消息的功能,比如服务器处理完成某项工作后向客户端发送结果

广播流程图

laravel 广播

Socket.IO 服务

第三方服务 laravel-echo-server

1、全局安装socket

npm install -g laravel-echo-server

2、配置laravel-echo-server.json

laravel-echo-server init

配置

{
	"authHost": "http://localhost",
	"authEndpoint": "/broadcasting/auth",
	"clients": [
		{
			"appId": "7c4d46b3224252d1",
			"key": "d5facfd856868864f68f8f923f7b2212"
		}
	],
	"database": "redis",
	"databaseConfig": {
		"redis": {
			"port": "6379",
			"host": "127.0.0.1",
			"db": 1
		},
		"sqlite": {
			"databasePath": "/database/laravel-echo-server.sqlite"
		}
	},
	"devMode": true,
	"host": null,
	"port": "6001",
	"protocol": "http",
	"socketio": {},
	"sslCertPath": "",
	"sslKeyPath": "",
	"sslCertChainPath": "",
	"sslPassphrase": "",
	"subscribers": {
		"http": true,
		"redis": true
	},
	"apiOriginAllow": {
		"allowCors": true,
		"allowOrigin": "http://localhost:80",
		"allowMethods": "GET, POST",
		"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
	}
}

3、启动socket服务

laravel-echo-server start

订阅方式有 Redis 、Http、Pusher,laravel事件使用的是Redis。

4、模拟一个post请求发送json

http://localhost:6001/apps/7c4d46b3224252d1/events?auth_key=d5facfd856868864f68f8f923f7b2212

{
    "channel": "publish",
    "name": "sendPublish",
    "data": {
        "status": 200,
        "message": "发布成功"
	}
}

laravel 广播

laravel广播事件

.env 配置

BROADCAST_DRIVER=redis

config/app.php的BroadcastServiceProvider的注释去掉,注册广播授权路由和回调

App\Providers\BroadcastServiceProvider::class,

广播配置config/broadcasting.php

新增一个广播事件

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class PublishEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $data;
    public $broadcastQueue = 'publish';
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($data = '')
    {
        $this->data = $data;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('publish');
    }

    /**
     * 事件的广播名称。
     *
     * @return string
     */
    public function broadcastAs()
    {
        return 'sendPublish';
    }

    public function broadcastWith()
    {
        return [
            'data' => $this->data,
            'time' => time()
        ];
    }
}

没有定义broadcastAs方法,会获取类名作为事件name

$name = method_exists($this->event, 'broadcastAs')
            ? $this->event->broadcastAs() : get_class($this->event);

启动事件队列服务,配置public $broadcastQueue = ‘publish’; 指定队列

php artisan queue:work redis --queue=publish --sleep=3 --timeout=180

调用广播事件进行广播

$data = [
    'msg' => '发布成功'
];
event(new \App\Events\PublishEvent($data));

客户端

使用 vue-echo

main.js

import io from 'socket.io-client';
import VueEcho from 'vue-echo';

window.io = io;
Vue.use(VueEcho, {
  broadcaster: 'socket.io',
  host: window.location.hostname + ':6001'
});

client.js 在可以监听channel

mounted() {
    this.$echo.channel('publish').listen('.sendPublish', (res) => {
        console.log(res);
    });
},

在使用 Echo 订阅事件的时候为事件类加上 . 前缀。需要填写完全限定名称的类名。

参考资料


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

征服C指针

征服C指针

前桥和弥 / 吴雅明 / 人民邮电出版社 / 2013-2 / 49.00元

《图灵程序设计丛书:征服C指针》被称为日本最有营养的C参考书。作者是日本著名的“毒舌程序员”,其言辞犀利,观点鲜明,往往能让读者迅速领悟要领。书中结合了作者多年的编程经验和感悟,从C语言指针的概念讲起,通过实验一步一步地为我们解释了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种使用技巧。另外,还通过独特的方式教会我们怎样解读C语言那些让人“纠结”的声明语法,如何绕过C指针的陷阱......一起来看看 《征服C指针》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码