Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 14.09.2020 18:16:01

Laravel + pusher не работает на рабочем сервере

Версия Laravel - 8.1.0

Локальный сервер:
OC Windows
XAMMP 7.4.8
PHP 7.4.8

Рабочий сервер
ОС Linux Centos 7
PHP 7.4.8

Добрый вечер.
Настроил отправку push уведомлений по данной инструкции https://www.tutofox.com/laravel/laravel … ts-pusher/
.env

BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

PUSHER_APP_ID=code
PUSHER_APP_KEY=code
PUSHER_APP_SECRET=code
PUSHER_APP_CLUSTER=eu

app/config/broadcasting.php

'default' => env('BROADCAST_DRIVER', 'null'),

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => 'eu',
                'useTLS' => true
            ],
        ],

app/Events/Notifications.php

<?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 Notifications implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public $data;

    public function __construct($data)
    {
        $this->data = $data;
    }

    public function broadcastOn()
    {
        return ['mi-sbs-notification'];
    }

    public function broadcastAs()
    {
        return 'event-pusher';
    }
}

Команда вызывающая событие

event(new Notifications($message));

На локальном сервере всё отрабатывает нормально, а вот на продакшене все сообщения записываются в лог файлы

[2020-09-14 14:53:58] local.INFO: Broadcasting [event-pusher] on channels [mi-sbs-notification] with payload:
{
    "data": {
     текст сообщения
    },
    "socket": null
} 

Google и Яндекс уже перерыл. Помогите, пож-та, разобраться

Изменено Vladimir_user (14.09.2020 18:18:33)

Не в сети

#2 15.09.2020 20:09:57

Re: Laravel + pusher не работает на рабочем сервере

Ещё заметил, что время указанное в логах на продакшене на 2 часа меньше, чем серверное. Даже пробовал менять время на сервере - время в логах всё равно на 2 часа меняется в меньшую сторону

Не в сети

#3 16.09.2020 08:04:35

Re: Laravel + pusher не работает на рабочем сервере

Я бы дважды проверил .env на продакшене. Кроме того, сделал бы php artisan config:clear и php artisan cache:clear

Про время: проверь часовой пояс. просто вызови в консоли date


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#4 16.09.2020 11:43:37

Re: Laravel + pusher не работает на рабочем сервере

Спасибо за ответ.

Я бы дважды проверил .env на продакшене

Я уже 3-ё суток его перепроверяю)))
Пробовал разные комбинации.
Также в файле app/config/broadcasting.php прописывал ключи вручную - не помогло.

Запускал на локалке и сервере команды

$ php artisan tinker
config('broadcasting');

Результаты идентичны

Также заметил особенность. Если на локалке в файле .env указать не верный ключ, то при вызове события выдаёт исключение

Illuminate\Broadcasting\BroadcastException: Pusher error: 400. in file D:\xammp\htdocs\step-by-step.loc\vendor\laravel\framework\src\Illuminate\Broadcasting\Broadcasters\PusherBroadcaster.php on line 121

Если тоже самое сделать на продакшене, то ошибок не выдаёт. Такое ощущение, что на продакшене вообще игнорируется файл app/config/broadcasting.php и сразу все сообщения пишет в log файл.

Кроме того, сделал бы php artisan config:clear и php artisan cache:clear

Запускал и не раз))) Также чистил всё что только можно очистить с помощью команд

php artisan optimize&&php artisan cache:clear&&php artisan route:cache&&php artisan view:clear&&php artisan config:cache&&php artisan config:clear

Help me please!!!

Не в сети

#5 16.09.2020 16:33:01

Re: Laravel + pusher не работает на рабочем сервере

Вопрос закрыт.
Я заменил  ShouldBroadcast на ShouldBroadcastNow в событии

<?php

namespace App\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class Notifications implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public $data;

    public function __construct($data)
    {
        $this->data = $data;
    }

    public function broadcastOn()
    {
        return ['mi-sbs-notification'];
    }

    public function broadcastAs()
    {
        return 'event-pusher';
    }
}

После этого всё заработало

Изменено Vladimir_user (16.09.2020 16:33:32)

Не в сети

Подвал раздела