larave echo, socket.io, redis
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
});
в компоненте vue устанавливается прослушка
...
mounted() {
window.Echo.channel('chat.1')
.listen('Message', ({message}) => {
console.log(message);
});
},
...
config/database.php - 'prefix' => '',`
роутинг для теста
Route::post('messages', function(\Illuminate\Http\Request $request) {
App\Events\Message::dispatch($request->input('body'));
});
класс события
class Message implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public function __construct($message)
{
$this->message = $message;
// $this->dontBroadcastToCurrentUser();
}
public function broadcastOn()
{
return new Channel('chat.1');
}
public function broadcastAs()
{
return 'Message';
}
}
в консоли очереди отрабатываются
[2022-04-08 11:04:41][BIQ6ZW8soYu2CybvBLHdm5EZ0QO76R6i] Processing: App\Events\Message
[2022-04-08 11:04:41][BIQ6ZW8soYu2CybvBLHdm5EZ0QO76R6i] Processed: App\Events\Message
в консоли echo сервера тоже отрабатываются
Server ready!
Channel: chat.1
Event: Message
а в браузере коннект поднимается? во вкладке network фильтр ws
с redis впервые столкнулся, можно подробнее?
куда подробнее, запускаешь в консоли redis-cli потом после подключения вводишь PSUBSCRIBE * он начинает слушать ивенты и ты можешь послать ивент из пхп и посмотреть что прилетело в redis pub/sub
Обсуждают сегодня