sql >> Base de Datos >  >> NoSQL >> Redis

Quiere implementar sockets web en Laravel

Has estado usando pusher, así que asumo que sabes cómo usar event.

Te recomiendo laravel-echo-server. Es muy fácil de usar, con una API integrada.

Aquí hay un nuevo ejemplo de un proyecto laravel-echo desde cero. Después de configurar el proyecto.

necesitará predis si aún no lo ha instalado

composer require predis/predis
redis-server /usr/local/etc/redis.conf
  1. ejecute npm install -g laravel-echo-server
  2. ejecutar laravel-echo-server init
  3. quitar el comentario App\Providers\BroadcastServiceProvider::class en config/app.php
  4. añadir <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/socket.io.js"></script> en su aplicación.blade.php
  5. necesita un cliente de socketio, puede ejecutar npm install --save laravel-echo .En caso de que no esté familiarizado con npm o vue, simplemente puede incluir este archivo compilado de mi proyecto github.compiledjs
  6. agrega esto a 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. finalmente ejecute laravel-echo-server start y abra su proyecto, verá

    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE authenticated for: private- 
       App.User.1
    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE joined channel: private-App.User.1
    
  8. puedes escuchar cualquier evento que quieras u otras notificaciones

  9. aquí está mi proyecto de github echo-example

agregue un pequeño código para que pueda usar el mensaje de envío del cartero a un usuario específico. Puede ver el mensaje desde la consola de Chrome. Puede obtener más detalles de las capturas de pantalla del proyecto github