20 octubre, 2024
Notificaciones en Real Time en Laravel
Desarrollo de una aplicación práctica de notificaciones en real time en Laravel con Pusher. Para enviar un mensaje de una página a otra en la misma app.
 
                        Suscríbete a nuestro canal en Youtube
SuscríbirseDesarrollo de una aplicación práctica de notificaciones en real time en Laravel con Pusher. Para enviar un mensaje de una página a otra en la misma app.
Hola, en este ejemplo, les explicaré cómo implementar notificaciones en tiempo real de Laravel con un ejemplo práctico y sencillo. Usaremos Pusher para notificaciones en tiempo real. Pusher es uno de los servicios más famosos que lo ayuda a enviar notificaciones en tiempo real a sus aplicaciones. Al crear aplicaciones web, no es raro ver algún sistema de notificación en la aplicación que le avisará de inmediato cuando alguien realice una acción :
- Notificar si un usuario se autenticó en el sistema (registro y/o login)
- Notificar si un usuario realizó un pedido al carrito de compra de un sistema web.
- Notificar a determinados usuarios que otro usuario se ha registrado.
Empecemos con el ejemplo práctico. Siga los siguiente pasos:
Descargar Proyecto Laravel
Establezca el Proyecto Laravel escribiendo el siguiente comando.
composer create-project --prefer-dist laravel/laravel notificacionlaravel
Instale el paquete pusher-php-server
Primero, instale pusher-php-server a través del administrador de paquetes Composer.
composer requiere pusher/pusher-php-server
El paquete se registrará automáticamente.
Configuración de la aplicación Pusher
A continuación, regístrese para obtener una nueva cuenta en Pusher.com, si ya tiene una cuenta, inicie sesión. Su aplicación como se ve en la captura de pantalla a continuación.
app_id = "xxx7113"
key = "xxx41eac20c3b19b3xxx"
secret = "xxx6843dba9f716e3014"
cluster = "us2"
Puede obtener su app_id, key, secret y también anotar su clúster. Estos se pueden ubicar en la sección Claves de la aplicación de su panel de Pusher. También puede ver la imagen a continuación para obtener más aclaraciones.
Ahora configuramos Laravel para usar Pusher, para hacer esto, abra el archivo.env y actualice los valores para que correspondan con la configuración a continuación:
//.env
PUSHER_APP_ID=xxxxx
PUSHER_APP_KEY=xxxxx
PUSHER_APP_SECRET=xxxxx
PUSHER_APP_CLUSTER=xxxxx
Creamos un evento
Primero, creamos una clase de evento que se transmitiría a Pusher desde nuestro proyecto Laravel. Los eventos se pueden disparar desde cualquier parte de la aplicación.
php artisan make: event Notify
Esto creará una nueva clase Notificar en la aplicación >> Directorio de eventos. Abra el contenido del archivo y cambie a lo siguiente:
//Notify.php
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class Notify
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }
    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('notify-channel');
    }
}
Crear un controlador
php artisan make:controller NotificationController
Se verá el siguiente código con el método:
//NotificationController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Pusher\Pusher;
class NotificationController extends Controller
{
    public function notify()
    {
        $options = array(
                        'cluster' => env('PUSHER_APP_CLUSTER'),
                        'encrypted' => true
                        );
        $pusher = new Pusher(
                            env('PUSHER_APP_KEY'),
                            env('PUSHER_APP_SECRET'),
                            env('PUSHER_APP_ID'), 
                            $options
                        );
        $data['message'] = 'Hola Codea ';
        $pusher->trigger('notify-channel', 'App\\Events\\Notify', $data);
    }
}
Definimos la ruta
Registramos las rutas en web.php
//web.php
Route::get('notify','NotificationController@notify');
Route::view('/notification', 'notification');
Creamos una vista
Cree un archivo en resources/views/notification.blade.php y coloque el siguiente código en él.
<!DOCTYPE html>
<head>
  <title>Laravel Tiempo Real Codea.APP</title>  
  <script src="https://js.pusher.com/4.1/pusher.min.js"></script>
  <script>
   var pusher = new Pusher('{{env("PUSHER_APP_KEY")}}', {
      cluster: '{{env("PUSHER_APP_CLUSTER")}}',
      encrypted: true
    });
    var channel = pusher.subscribe('notify-channel');
    channel.bind('App\\Events\\Notify', function(data) {
      //alert(data.message);
      mensaje.textContent= data.message
    });
  </script>
  <body>
    <h1>APP EN TIEMPO REAL</h1>
    <p id="mensaje"></p>
  </body>
</head>
Probar la aplicación
- Abre dos pestañas del navegador: en una visita http://localhost:8000/notificationy en la otrahttp://localhost:8000/notify.
- En la vista notification, deberías ver la notificación en tiempo real cuando visitesnotifyen la otra pestaña.
Este ejemplo utiliza Laravel y Pusher para crear notificaciones en tiempo real. ¡Ahora puedes integrarlo en tu proyecto!
Leido 8123 veces | 4 usuarios
Descarga del código fuente Laravel de Notificaciones en Real Time en Laravel
Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.
Opciones de descarga
- Usuarios Registrados: Inicia sesión para descarga inmediata.
- Nuevos Usuarios: Regístrate y descarga.
 
                         
                         
                 
                 
                 
                             
                             
                            