Рубрики
Uncategorized

Создание приложения в реальном времени с помощью laravel echo server

Автор оригинала: David Wong.

Статья была переслана из профессионального сообщества разработчиков laravel. Оригинальная ссылка: https://learnku.com/laravel/t

На мой взгляд, общение в режиме реального времени-это будущее приложений. Службы сокетов обычно не так просто реализовать, но служба laravel echo меняет это.

В этой статье я кратко расскажу, как создать работающую службу сокетов и транслировать на нее события. (https://github.com/tlaverdure…)

Это совершенно бесплатно, вы просто запускаете свой собственный сервис сокетов. Вы также можете использовать толкатель интеграции laravel по умолчанию. Единственным недостатком является то, что он ограничен. Если вы превысите лимит, вам придется заплатить. Я предпочитаю структурировать эти вещи сам.

Требование:

  • Фреймворк Laravel (версия 5.6, используемая в этом руководстве)
  • Услуги Redis
  • Базовые знания laravel

Установите эхо-сервер laravel

Во-первых, нам нужно установить эхо-сервер laravel по всему миру. Вам нужно только ввести следующую команду в терминале.

 $ npm install -g laravel-echo-server

После установки откройте приложение laravel или запустите новый тестовый проект:

 $ composer create-project --prefer-dist laravel/laravel echo-test

Следующий , установите predis для нашего приложения:

 $ composer require predis/predis

После установки перейдите в корневой каталог проекта и инициализируйте службу сокетов:

 $ laravel-echo-server init

После выполнения этой команды вас спросят об информации о конфигурации службы сокетов. Вы можете заполнить следующую информацию в соответствии с вашей собственной ситуацией:

Помните, что в производственной среде всякий раз, когда вы ее используете, вам следует отключать режим разработчика.

Мы можем попробовать запустить сервис, чтобы посмотреть, работает ли он:

$ laravel-echo-server start

Результат выглядит следующим образом:

Настройте laravel, чтобы эхо-сервер laravel работал правильно

Откройте config/приложение. php Файл и отменить Поставщик услуг вещания Комментарии в этом массиве поставщиков:

Поставщики приложений Поставщик услуг вещания::класс,

Этот провайдер запустит широковещательную маршрутизацию (возможно, у вас уже есть маршруты/Этот провайдер запустит широковещательную маршрутизацию (возможно, у вас уже есть маршруты/

открыть .env Документ, модификация BROADCAST_DRIVER Значение-это значение (redis или журнал) , которое вы определили при инициализации эхо-сервера laravel. В этом уроке мы будем использовать драйвер redis. Изменить в то же время QUEUE_DRIVER Для любого драйвера очереди, который вам нравится, вы можете легко изменить его на драйвер redis в этом примере, потому что вы уже установили и запускаете его.

Далее мы должны установить розетку.клиент ввода-вывода и пакет laravel echo. Вы можете сделать следующее:

$ npm install --save socket.io-client
$ npm install --save laravel-echo

(возможно, вам потребуется запустить это перед запуском этого) установка npm Для установки laravel и связанных с ним зависимостей)

Следующий открытый resources/assets/js/bootstrap.js Файл или ваш собственный файл JS, в котором представлен весь базовый код JS.

Теперь давайте добавим код для запуска базовой службы echo:

import Echo from 'laravel-echo'

window.io = require('socket.io-client');
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
}); 

Теперь мы готовы слушать на канале! Я объясню, как открыть канал в этом уроке, а затем начну слушать наш первый канал:

window.Echo.channel('test-event')
    .listen('ExampleEvent', (e) => {
        console.log(e);
    });

Мы используем код js, чтобы сообщить программе, что мы подписались на канал с именем “тестовое событие”, и прослушиваем событие “exampleevent” (это название класса события, вы также можете настроить его в соответствии с вашими потребностями).

Давайте создадим этот класс событий:

$ php artisan make:event ExampleEvent

Это будет в Приложении/Событиях Создайте каталог с именем ExampleEvent.php Классы событий Давайте настроим этот класс событий, чтобы он работал в нашей службе сокетов. Во-первых, убедитесь, что ваш класс событий наследуется от в Следует Транслировать Интерфейс, например, следующий;

пример реализации события класса ShouldBroadcast

Затем прокрутите вниз, чтобы найти функцию трансляция на , измените ее, чтобы мы могли транслировать на правильном канале:

public function broadcastOn()
{
    return new Channel('test-event');
}

Давайте создадим новую функцию ниже, чтобы у нас были некоторые данные экземпляра:

public function broadcastWith()
{
    return [
        'data' => 'key'
    ];
}

Эта функция вызывается при вызове события, и она вернет данные в вашу службу сокетов.

А теперь давайте попробуем! Откройте свой routes/web.php Файл и добавьте новый маршрут тестирования:

Route::get('test-broadcast', function(){
    broadcast(new \App\Events\ExampleEvent);
});

Существует множество способов трансляции Пример события Класс, в этом случае я использую широковещательную передачу() Помощник, на мой взгляд, это самый простой способ)

Начать прослушивание очереди:

$ php artisan queue:listen --tries=1

Браузер открывает страницу, содержащую файлы JS (которая может быть страницей приветствия laravel по умолчанию). Это первая страница. Пожалуйста, не закрывайте вторую страницу. Мы подписались на услугу сокетов на этой странице.

Затем откройте другую страницу, чтобы посетить /тестовую трансляцию , которая вернет пустую страницу, но передаст ваше Пример события Класс, транслируемый в вашу службу сокетов. Вернитесь на нашу первую страницу, откройте консоль браузера, и вы увидите аналогичную информацию:

Как вы можете видеть, данные отображаются на нашем клиенте в этой форме. Вы можете ввести любые данные через свой Пример события класс, чтобы транслировать их, данные могут быть обновлениями новостей, обновлениями страниц, общим количеством просмотров или более.

Поскольку мы установили режим разработчика в конфигурации сервера laravel echo, вы можете просмотреть всю основную информацию о службе сокетов:

Теперь у вас установлена и запущена базовая служба сокетов! Но это еще не все. В соответствии с этим вы можете делать больше вещей, таких как предоставление частных каналов аутентификации для отдельных пользователей. (если вы хотите транслировать обновления заказов или личные сообщения)

Для этого я предлагаю вам ознакомиться с документацией laravel для получения дополнительной информации. Есть много вещей, которые вы можете сделать с этой темой, чтобы сделать ваше приложение более волшебным. С соответствующими документами вы можете ознакомиться здесь:

Вещание – Laravel – Фреймворк PHP для веб-artisans.laravel.com

Другой: запуск в производственной среде

Как я уже говорил, вы должны laravel-echo-server.json Режим разработчика отключен в файле конфигурации. Конечно, вы можете проигнорировать этот файл на сервере и повторно инициализировать его, потому что ваш хост может отличаться от локального.

Вам также необходимо поддерживать работу службы сокетов в рабочей среде. Вы можете использовать supervisor, но я обычно использую PM2 , он может удобно и быстро управлять вашим сервисом. (http://pm2.keymetrics.io/)

Здесь я использую PM2 Базовая конфигурация socket.sh:

#!/usr/bin/env bash

laravel-echo-server  start

Установлен PM2 После этого вы можете pm2 начать socket.sh Команда для запуска сценария и запуска службы сокетов.

Я надеюсь, что это может вам помочь. Эта статья в основном знакомит с некоторыми базовыми знаниями. Далее мы продолжим обсуждение авторизации маршрутов вещания и различных каналов вещания.

Спасибо вам за чтение!

Оригинал: “https://developpaper.com/building-real-time-application-with-laravel-echo-server/”