Top.Mail.Ru

Работа с WebSocket laravel

Работа с WebSocket laravel

Laravel предоставляет удобные средства для работы с WebSocket через пакеты и библиотеки. Один из таких пакетов - это "beyondcode/laravel-websockets".

Установите пакет через Composer:

composer require beyondcode/laravel-websockets

Затем выполните миграции:

php artisan migrate
 
Добавьте конфигурацию в ваш файл .env:
 
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_APP_CLUSTER=mt1
 
Отредактируйте файл config/broadcasting.php:
'connections' => [
    // ...
    'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
            'cluster' => env('PUSHER_APP_CLUSTER'),
            'encrypted' => true,
            'host' => '127.0.0.1',
            'port' => 6001, // порт, используемый WebSocket
            'scheme' => 'http',
        ],
    ],
    // ...
],
 
Создайте файл routes/websockets.php и определите ваши WebSocket маршруты:

use Illuminate\Support\Facades\Broadcast;

Broadcast::channel('chat.{roomId}', function ($user, $roomId) {
    return true; // Логика, проверяющая доступ к каналу
});

Запустите сервер WebSocket с помощью Artisan команды:

php artisan websockets:serve
 
По умолчанию, сервер будет доступен по адресу http://localhost:6001.
 
Используйте библиотеку, поддерживаемую вашим фронтенд-фреймворком, для подключения к вашему серверу WebSocket. Например, для JavaScript с использованием Laravel Echo и Vue.js:
 

import Echo from 'laravel-echo';

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    encrypted: true,
    wsHost: window.location.hostname,
    wsPort: 6001, // порт WebSocket
});

 

Теперь у вас есть рабочий сервер WebSocket в Laravel, и вы можете использовать его для реализации реального времени в вашем приложении. 

 
 
 

Автор:

196

Читайте также

0 комментариев