• Система push-уведомлений на Yii 2 при откликах на стажировки
    Хотите заказать услугу прямо сейчас?

    Как сделать push-уведомления на Yii 2 при откликах на стажировки



    После того как система уведомлений через Pjax и AJAX работает, следующим шагом логично сделать уведомления реальными push-уведомлениями, которые будут приходить моментально, без постоянного опроса сервера. В этой статье разберём подход с использованием WebSocket и сервиса Pusher.

    1. Выбор технологии

    Для push-уведомлений есть два основных варианта:

    • WebSocket — полноценное соединение между сервером и клиентом. Можно поднять через Ratchet или Swoole.
    • Pusher — облачный сервис, который управляет WebSocket-подключениями и отправкой сообщений.

    Я выбрал Pusher, чтобы не поднимать отдельный WebSocket-сервер и сэкономить время на инфраструктуру.

    2. Установка Pusher SDK

    Через Composer:

    composer require pusher/pusher-php-server

    3. Настройка Pusher в Yii 2

    В конфиге приложения добавляем компонент:

    <?php
    'components' => [
        'pusher' => [
            'class' => 'Pusher\Pusher',
            'key' => 'YOUR_APP_KEY',
            'secret' => 'YOUR_APP_SECRET',
            'app_id' => 'YOUR_APP_ID',
            'options' => ['cluster' => 'YOUR_APP_CLUSTER', 'useTLS' => true]
        ],
    ],
    ?>

    4. Создание уведомления через событие

    При отклике на стажировку триггерим событие и отправляем push:

    <?php
    if ($model->save()) {
        Yii::$app->trigger('internship.response', new \yii\base\Event([
            'data' => [
                'userId' => $model->internship->user_id,
                'message' => "Новый отклик на вашу стажировку: {$model->internship->title}"
            ]
        ]));
    }
    
    Yii::$app->on('internship.response', function($event) {
        $notification = new Notification();
        $notification->user_id = $event->data['userId'];
        $notification->message = $event->data['message'];
        $notification->save();
    
        // Отправка push через Pusher
        $pusher = Yii::$app->pusher;
        $pusher->trigger('notifications-channel', 'new-notification', [
            'message' => $event->data['message'],
            'userId' => $event->data['userId']
        ]);
    });
    ?>

    5. Отображение уведомлений на фронтенде

    Подключаем Pusher.js:

    <script src="https://js.pusher.com/7.2/pusher.min.js"></script>

    И инициализируем подписку на канал:

    <script>
    Pusher.logToConsole = false;
    
    var pusher = new Pusher('YOUR_APP_KEY', {
      cluster: 'YOUR_APP_CLUSTER'
    });
    
    var channel = pusher.subscribe('notifications-channel');
    channel.bind('new-notification', function(data) {
        if(data.userId == CURRENT_USER_ID){
            // Добавляем уведомление в список
            var list = document.querySelector('.notifications-list');
            var li = document.createElement('li');
            li.textContent = data.message;
            li.classList.add('new');
            list.prepend(li);
        }
    });
    </script>

    6. Преимущества push-уведомлений

    • Мгновенное оповещение пользователя о новом отклике.
    • Не нужно постоянно опрашивать сервер через AJAX.
    • История уведомлений остаётся в базе, можно комбинировать с Pjax.
    • Легко масштабируется для большого количества пользователей.

    7. Дружеский совет

    Начинайте с простого: сначала храните уведомления в базе и отображайте через Pjax. Потом добавляйте Pusher для мгновенных push-уведомлений. Так вы постепенно выстраиваете надёжную систему без перегрузки.

    Итог

    Использование Pusher на Yii 2 позволяет легко реализовать систему push-уведомлений при откликах на стажировки. Пользователь получает уведомления мгновенно, а вы сохраняете контроль и историю в базе. Такой подход делает личный кабинет более интерактивным и современным.

    Вам может быть интересным

    Восстановление сайта на Yii после взлома: пошаговое руководство

    Посмотреть

    Создание платформы дистанционного обучения на Yii — полное руководство

    Посмотреть

    📰 Последние статьи

    🚀 Можно ли написать сайт за 1 день: честный разбор с примерами

    Читать

    Я вообще хороший программист или просто умею гуглить?

    Читать

    Что сдавать на программиста после 9 класса в 2026 году

    Читать

    Киберпреступность в 2026: как устроена теневая цифровая экономика

    Читать

    GitHub Copilot и “код из чужих проектов” — в чём скандал

    Читать

    Чёрный список работодателей — почему программисты закрывают на него глаза в 2026 году

    Читать

    Почему даже senior-разработчики иногда боятся обновлять Bitrix

    Читать

    1С-Битрикс снова подорожал: рынок это воспринял гораздо болезненнее, чем кажется

    Читать

    Почему одни разработчики зарабатывают $100, а другие $10 000

    Читать

    Что будет, если отключат интернет: полный разбор последствий

    Читать

    Дорама «Милашка-программист» — честный разбор от программиста

    Читать

    Почему становятся программистами 💻

    Читать

    Разговор о взломе ВК и безопасности аккаунтов

    Читать

    Жаргон программистов: как они разговаривают и почему это звучит как заклинания

    Читать

    «Не заставляйте меня думать» — Стив Круг: разбор книги, идеи и честная критика

    Читать

    ИИ для программистов 1С: как искусственный интеллект меняет разработку в 1С

    Читать

    🔐 Почему компании переходят на Zero Trust: новая модель безопасности в 2026 году

    Читать

    Как защищают приложения в 2026: угрозы, архитектура и реальная безопасность

    Читать

    🤖 Заменит ли ИИ программистов: полный разбор будущего профессии

    Читать

    Какие книги читать программисту с нуля — дружеский обзор без скучной теории

    Читать

    ИИ для программистов: как искусственный интеллект меняет разработку в 2026 году

    Читать

    🚨 Почему ломается сайт: полный разбор с примерами кода

    Читать

    Комментарии (0)

    Оставить комментарий

    Кейсы компании

    Кейс: создание кастомной корзины на 1С‑Битрикс с лицензией «Стандарт»

    Посмотреть

    Кастомная система комментариев WordPress с микроразметкой и AJAX

    Посмотреть

    Как создать компонент в Битрикс 1С, который изменяет цену на китайские юани

    Посмотреть

    🎯 Кейс Павлов Студио: как мы внедрили Яндекс SmartCaptcha для защиты всех форм сайта (включая Bitrix)

    Посмотреть

    Разработка онлайн-калькулятора для товаров на сайте wp

    Посмотреть

    Обновление сайта с битрикс 1с с версии php 5.6 до 8.2

    Посмотреть

    Разработка сервиса для сбора информации из соц.сети «Вконтате»

    Посмотреть

    Разработка мега-меню для сайта на wordpress https://doma-penoblok.ru/

    Посмотреть

    Разработка и сопровождение сайта  https://aaa-sitrak.ru/ с последующей интеграцией на 1с-битрикс

    Посмотреть

    Разработка интернет-магазина https://sklad38.ru/ на битрикс 1с

    Посмотреть

    Доработка сайта https://tochka-kontakta.ru/ для организации «Точка Контакта»

    Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите ее, затем начинайте создавать!

    Посмотреть
    Max Messenger