Здравствуйте, пытаюсь поднять laravel + websocket всё это в docker.
Всё вроде работает между собой, но на клиенте не приходит событие, что может быть?
Настройки laravel-echo-server.json
{
"authHost": "backend",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {
"port": "6379",
"host": "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": false,
"allowOrigin": "",
"allowMethods": "",
"allowHeaders": ""
}
}
App\Events\TestEvent.php
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class TestEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public function broadcastOn()
{
return new Channel('test');
}
}
Подключаюсь к сокету
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').listen('TestEvent', e => {
console.log(e);
});
Что показывает php artisan queue:listen: Скриншот удалён модератором.
Что показывает laravel-echo-server:
1. Скриншот удалён модератором.
2. Скриншот удалён модератором.
Что показывает redis-cli MONITOR: Скриншот удалён модератором.
Вызываю событие в routes/web.php:
Route::get('/fire', function () {
event(new TestEvent());
return 'ok';
});