Хотите реализовать веб-сокеты в Laravel - PullRequest
0 голосов
/ 29 мая 2018

Я хочу реализовать веб-уведомления в Laravel, используя веб-сокеты.Я пробовал толкатель.Это очень просто, но это платный пакет.Я также попробовал redis и socket.io, для которого мне нужно установить horizon.Я использую Windows и не могу установить ее на Windows в соответствии с тем, что я прочитал о horizon.

Так что я очень озадачен push-уведомлениями.Я пытаюсь хотя бы одну неделю, но пока не нашел решения.Мой внешний интерфейс работает на Angluar 5 / Android, а внутренний - на Laravel 5.6.

Не могли бы вы предложить мне какие-нибудь хорошие идеи для реализации push-уведомлений?

Ответы [ 4 ]

0 голосов
/ 02 марта 2019

НАИЛУЧШИЙ СПОСОБ ИНТЕГРИРОВАНИЯ РЕАЛЬНОСТИ В LARAVEL - НИЧЕГО УЗЛА ИЛИ ПУШЕРА

Вы находите Пушера проще и не хотите платить цену.Тогда не задумываясь, попробуйте Laravel Websockets .Это очень простая замена толкателя.

Короче говоря Вы используете библиотеки-толкачи для доступа к серверу-толкачу, который размещен на вашем php-сервере.С его открытым исходным кодом его бесплатно.Это лучше, чем использование socket.io или redis, потому что они требуют от вас дополнительных затрат на сервер.Вы можете проверить их демонстрационное приложение здесь

PS

Если вы хотите больше пользовательских элементов управления, то вы можете использовать храповик

0 голосов
/ 01 июня 2018

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

Я рекомендую вам laravel-echo-server. Он очень прост в использовании со встроенным API.

Вот свежий пример проекта laravel-echo с нуля.После настройки проекта.

вам понадобится предисловие, если вы еще не установили его

composer require predis/predis
redis-server /usr/local/etc/redis.conf
  1. запустите npm install -g laravel-echo-server
  2. запустите laravel-echo-server init
  3. раскомментировать App\Providers\BroadcastServiceProvider::class в config/app.php
  4. добавить <script src="https://cdn.jsdelivr.net/npm/socket.io-client@2.1.1/dist/socket.io.js"></script> в ваш app.blade.php
  5. вам нужен socketio-клиент, вы можете запустить npm install --save laravel-echo. Если вы не знакомы с npm или vue, вы можете просто включить этот скомпилированный файл из моего проекта на github. compiledjs
  6. добавить это в app.blade.php

    <script>
    window.Echo = new Echo({
    broadcaster: 'socket.io',
    
    host: '{{url('/').':6001'}}',
    });
    Echo.private(`App.User.{{Auth::id()}}`) // private channel
    .listen('NewMessage', (e) => {
        console.log(e)
    
    });
    
    
    </script>
    
  7. наконец запустите laravel-echo-server start и откройте ваш проект, вы увидите

    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE authenticated for: private- 
       App.User.1
    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE joined channel: private-App.User.1
    
  8. вы можете прослушать любое событиеВы хотите или другие уведомления

  9. вот мой проект GitHub эхо-пример

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

0 голосов
/ 02 июня 2018

Взгляните на эту статью .Он охватывает реализацию websocket в laravel с использованием драйвера redis, клиента Laravel echo и socket.io.

Согласно статье выше:

«Почему вы просто не используете Pusher?»

Вот в чем дело.

Laravel поставляется с включенным Pusher.Несмотря на то, что Pusher кажется быстрым решением «подключи и работай» (и оно есть), оно имеет ограничения.Отметьте https://pusher.com/pricing

И большинство учебных пособий обманывают вас своим названием реализации Websockets, когда на самом деле они просто хотят дать вам Pusher.(И моя любимая часть - когда говорят, что вы легко можете переключиться на socket.io)

0 голосов
/ 31 мая 2018

Согласно документации laravel , я рекомендую использовать Pusher.Я создал пакет для пользователя WebSockets в laravel.

https://www.techzonemind.com/scalable-websocket-server-laravel-applications/

Он будет использовать Redis для фоновой очереди для оптимизации производительности.Я использовал это в нескольких решениях.Я не могу быть пригодным для использования во всех случаях использования.Но приятно взглянуть.

PHP не компилируется для выполнения параллельных задач, если у вас есть выбор, то nodejs будет лучшим решением

...