Este dilema se puede tratar de variadas formas, por lo tanto te dejamos la resolución más completa en nuestra opinión.
Solución:
En total esto es lo que se requiere:
- Instalación predeterminada de Laravel
- el compositor requiere predis/predis
- Instalación de módulos NPM (laravel-echo-server, socket.io & laravel-echo)
-
Configure Laravel Echo Server a través de la consola (principalmente configuraciones predeterminadas, excepto el nombre de dominio):
"authHost": "http://echo",
"authEndpoint": "/broadcasting/auth",
"clients": ["appId": "fc3de97a1787ea04",
"key": "ecf31edced85073f7dd77de1588db13b"],
"database": "sqlite",
"databaseConfig":
"redis": ,
"sqlite":
"databasePath": "/database/laravel-echo-server.sqlite",
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": ,
"secureOptions": 67108864,
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers":
"http": true,
"redis": true
,
"apiOriginAllow":
"allowCors": true,
"allowOrigin": "http://echo:80",
"allowMethods": "GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id" -
Configuración de Redis Server y conexión a él con el archivo Laravel broadcasting.php
'default' => env('BROADCAST_DRIVER', 'redis')
o BROADCAST_DRIVER=redis en el archivo .env
- Agregar ruta en web.php
Route::get('/test-broadcast', function()
broadcast(new AppEventsExampleEvent);
return response('OK');
);
- Agregar código en bootstrap.js:
importar eco desde ‘laravel-echo’
ventana.io = require(‘socket.io-cliente’);
ventana.Echo = new Echo(emisor: ‘socket.io’, host: ventana.ubicación.nombre de host + ‘:6001’ );
ADICIONAL
window.Echo.channel(‘MyChannel’) .listen(‘.ExampleEvent’, (e) => console.log(e); );
- Corriendo
npm run dev
para compilar todos los módulos de Javascript - Corriendo
laravel-echo-server start
para iniciar Laravel Echo Server - Corriendo
php artisan queue:listen --tries=1
para iniciar la cola de escucha - Accediendo a http://echo/test-broadcast
ACTUALIZADO
11.1 Ajuste los métodos para el evento de ejemplo para:
public function broadcastOn() return new Channel(‘MyChannel’);
public function broadcastAs() return ‘ExampleEvent’;
11.2 En welcome.blade.php, antes de la etiqueta BODY, agregue
11.3 en base de datos.php, establecer redix prefix para vaciar string valor
'prefix' => env('REDIS_PREFIX', '')
NO OLVIDES VOLVER A EJECUTAR npm run dev
y borrar caché del navegador
Resultados
Reseñas y puntuaciones del post
Si te gustó nuestro trabajo, eres capaz de dejar una sección acerca de qué le añadirías a este artículo.