CRUD в реальном времени с API Laravel с использованием WebSockets: пошаговое руководство

Чтобы создать приложение CRUD реального времени (создание, чтение, обновление, удаление) с API Laravel с использованием WebSockets, вы можете выполнить шаги, описанные ниже.

  1. Настройте Laravel и WebSockets:

    • Установите Laravel, запустив composer create-project --prefer-dist laravel/laravel myprojectна своем терминале.
    • Установите пакет Laravel WebSockets, запустив composer require Beyondcode/laravel-websocketsв своем терминале.
    • Опубликуйте файл конфигурации WebSockets с помощью php artisanvendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config".
    • Сгенерируйте сертификат SSL, запустив php artisan websockets:cert.
  2. Создание базы данных и миграция:

    • Создайте новую базу данных для своего приложения.
    • Создайте файл миграции с помощью команды php artisan make:migration create_items_table.
    • В файле миграции определите необходимые столбцы для таблицы элементов, такие как имя, описаниеи т. д., и запустите миграцию с помощью php artisanmigrate Команда.
  3. Настройте маршруты и контроллеры:

    • Определите необходимые маршруты в файле routes/api.phpдля операций CRUD.
    • Создайте соответствующие контроллеры, используя php artisan make:controller ItemController --api --model=Item.
  4. Реализовать функциональность в реальном времени:

    • В вашем ItemControllerимпортируйте необходимые классы:
      use App\Events\ItemCreated;
      use App\Events\ItemUpdated;
      use App\Events\ItemDeleted;
      use App\Models\Item;
    • Реализуйте методы CRUD, например:

      public function store(Request $request)
      {
       $item = Item::create($request->all());
       event(new ItemCreated($item));
       return response()->json($item, 201);
      }
      
      public function update(Request $request, Item $item)
      {
       $item->update($request->all());
       event(new ItemUpdated($item));
       return response()->json($item, 200);
      }
      
      public function destroy(Item $item)
      {
       $item->delete();
       event(new ItemDeleted($item));
       return response()->json(null, 204);
      }
    • Создайте соответствующие классы событий, используя php artisan make:event ItemCreated, php artisan make:event ItemUpdatedи php artisan make:event ItemDeleted>команды.
    • Реализуйте классы событий, например:
      public $item;
      public function __construct(Item $item)
      {
       $this->item = $item;
      }
      public function broadcastOn()
      {
       return new Channel('items');
      }
      public function broadcastWith()
      {
       return ['item' => $this->item];
      }
  5. Настроить WebSockets:

    • Откройте файл config/websockets.phpи установите для значения routeзначение nullв apps.
    • Установите для драйвера broadcastingзначение pusherи настройте учетные данные Pusher в файле config/broadcasting.php.
  6. Запустите сервер WebSockets:

    • Запустите php artisan websockets:serveна своем терминале, чтобы запустить сервер WebSockets.

Теперь у вас есть CRUD-приложение реального времени с API Laravel, использующее WebSockets. Вы можете отправлять запросы к определенным маршрутам для создания, обновления и удаления элементов, и изменения будут транслироваться всем подключенным клиентам.