farzin/easy-pusher

该包最新版本(dev-master)没有提供许可证信息。

一个使用pusher发送实时推送通知的包

dev-master 2017-10-14 07:34 UTC

This package is auto-updated.

Last update: 2024-09-18 02:50:00 UTC


README

现在通过公共或私人渠道广播事件不再困难,您可以向特定用户或用户集合发送通知,

安装

  • composer require "farzin/easy-pusher":"dev-master"

添加服务提供者

  • Vinkla\Pusher\PusherServiceProvider::class
  • Farzin\EasyPusher\EasyPusherServiceProvider::class

添加外观

'EasyPusher' => Farzin\EasyPusher\EasyPusherFacade::class

JS指南

首先,您需要将pusher.js添加到您的HTML文件中 <script src="https://js.pusher.com/4.1/pusher.min.js"></script>

//For Private Channels: 

 window.userId = '{{ auth()->check() ? auth()->user()->id : null}}';
    Pusher.logToConsole = true;
    var pusherPrivate = new Pusher('YOUR PUSHER KEY', {
        authEndpoint: '/easy-pusher/auth',
        auth: {
            headers: {
                'X-CSRF-TOKEN': '{{ csrf_token() }}'
            }
        },
        cluster: 'us2',
        encrypted: true
    });
    var pusherPublic = new Pusher('YOUR PUSHER KEY', {
        cluster: 'us2',
        encrypted: true
    });
    var channels = {!! json_encode(config('easy-pusher.channels')) !!};
    for(var i = 0; i < channels.length; i++) {
        var channel = channels[i];
        if (channel.match(/^(private).*/)) {
            pusherPrivate.subscribe(channel + '.' + window.userId);
        } else {
            pusherPublic.subscribe(channel);
        }
	}
    pusherPublic.bind('sample-event', function () {
		alert();
    })

后端指南

首先,您需要发布配置文件: php artisan vendor:publish 然后在easy-pusher.php配置文件中,您需要定义您的频道,对于私有频道,前缀为'private';

return [
    'channels' => [
        'private-sample-channel', //prefix with public or private
        'public-sample-channel'
    ]
];

用于广播事件

use EasyPusher;

//broadcast event to public channels
EasyPusher::withEvent('sample-event')->withData(array $data)->send();


//for private channels

//collection of users
EasyPusher::withEvent('sample-event')->toUsers(Collection $users)->withData(array $data)->send();

//specific user | user Model
EasyPusher::withEvent('sample-event')->toUser($user)->withData(array $data)->send();

您可以将事件名称作为字符串或合格类名传递。