Украина, Днепр
(095) 478-70-11
Слздаем аккаунт и апку на pusher.com и прописываем в env
BROADCAST_DRIVER=pusher PUSHER_APP_ID=#данные с pusher.com PUSHER_KEY=#данные с pusher.com PUSHER_SECRET=#данные с pusher.com
Установим необходимые компоненты
composer require pusher/pusher-php-server
Создаем событие по которому будет отрабатывать отправка уведомления
php artisan make:event MessageSended
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Queue\SerializesModels;
class MessageSended implements ShouldBroadcast
{
use SerializesModels;
/**
* @var array
*/
public $data;
/**
* Create a new event instance.
* @param array $data
*/
public function __construct(User $user, array $data)
{
$this->data = $data;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return ['user-channel'];
}
public function broadcastAs()
{
return 'message-sender';
}
}
Теперь нужно создать слушателя и джобу для ее диспача в слушателе
php artisan make:listener SendMessageNotification --event=MessageSended
namespace App\Listeners;
use App\Events\ChatMessageSend;
use App\Notifications\MessageSend;
class SendMessageNotification
{
/**
* Create the event listener.
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param MessageSended $event
* @return void
*/
public function handle(MessageSended $event)
{
DoSomthing::dispatch($event);
}
}
php artisan make:job DoSomthing
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Throwable;
class DoSomthing implements ShouldQueue, ShouldBeUnique
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Timeout job.
* @var int
*/
public int $timeout = 2000;
/**
* Create a new job instance.
*/
public function __construct(public SendMessageNotification $data)
{
//
}
/**
* Execute the job.
*/
public function handle(): void
{
for ($i = 1; $i <= 10000; $i++) { Log::info(get_class($this).' success added to log: '.$i); } } /** * @param Throwable $exception * @return void */ public function failed(Throwable $exception): void { Log::error(get_class($this).' an error occurred: '.$exception->getMessage());
}
}
Теперь в каком либо контроллере запустить событие
event(new MessageSended($user, $data));
Последний пунктом нужно на сторе фронта принять данные от пушера, на сайте пушера есть необходимые настройки для разных фрон фреймворков, пример для чистого js
var pusher = new Pusher('key_from_pusher_com', {
cluster: 'eu'
});
var channel = pusher.subscribe('name_chanel_from_laravel');
channel.bind('name_recever_from_laravel', function(data) {
alert(JSON.stringify(data));
});
Copyright © 2012-2026 All rights reserved.
created by WPS.