Используя cboden / ratchet я получил интерфейс 'Rachet \ MessageComponentInterface' не найдена ошибка - PullRequest
0 голосов
/ 21 ноября 2018

В моем приложении laravel 5.7 я установил cboden / ratchet, используя некоторые онлайн-документы

composer.json :
    "type": "project",
    "require": {
        ...
        "cboden/ratchet": "^0.4.1",

С приложением / Classes / Socket / Base / BaseSocket.php:

<?php
namespace App\Classes\Socket\Base;

use Rachet\MessageComponentInterface;
use Rachet\ConnectionInterface;

class BaseSocket implements MessageComponentInterface {

    public function onOpen(ConnectionInterface $conn) {

    }

    public function onMessage(ConnectionInterface $conn, $mgs) {

    }

    public function onClose(ConnectionInterface $conn) {

    }

    public function onError(ConnectionInterface $conn, \Exception $e) {

    }

}

и консольюкоманда app / Console / Commands / ChatServer.php:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

use Ratchet\Http\HttpServer;
use Ratchet\Server\IoServer;
use Ratchet\WebSocket\WsServer;
use App\Classes\Socket\ChatSocket;

class ChatServer extends Command
{
    protected $signature = 'chat_server:serve';

    protected $description = 'chat_server description';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        $this->info("Start server!");
        $server= IoServer::factory(
            new HttpServer(
                new WsServer(
                    new ChatSocket()
                )
            ),
            8080
        );

        $server->run();
    }
}

Но при выполнении команды в консоли я получил ошибку:

$ php artisan chat_server:serve
Start server!
PHP Fatal error:  Interface 'Rachet\MessageComponentInterface' not found in /mnt/_work_sdb8/wwwroot/lar/Votes/app/Classes/Socket/Base/BaseSocket.php on line 7

   Symfony\Component\Debug\Exception\FatalErrorException  : Interface 'Rachet\MessageComponentInterface' not found

  at /mnt/_work_sdb8/wwwroot/lar/Votes/app/Classes/Socket/Base/BaseSocket.php:7
     3| 
     4| use Rachet\MessageComponentInterface;
     5| use Rachet\ConnectionInterface;
     6| 
  >  7| class BaseSocket implements MessageComponentInterface {
     8| 
     9|     public function onOpen(ConnectionInterface $conn) {
    10| 
    11|     }


   Whoops\Exception\ErrorException  : Interface 'Rachet\MessageComponentInterface' not found

  at /mnt/_work_sdb8/wwwroot/lar/Votes/app/Classes/Socket/Base/BaseSocket.php:7
     3| 
     4| use Rachet\MessageComponentInterface;
     5| use Rachet\ConnectionInterface;
     6| 
  >  7| class BaseSocket implements MessageComponentInterface {
     8| 
     9|     public function onOpen(ConnectionInterface $conn) {
    10| 
    11|     }

Я пропустил некоторые объявления или мне нужно добавить объявления вapp.php?Чтение документов, которые я пропустил, если у меня есть объявления конфигурации?

ОБНОВЛЕННЫЙ БЛОК № 2:

В поисках решения я нашел мнение, что мне нужно создать свой собственный сервиспровайдер для него правильно зарегистрируйте его в Laravel Какие шаги я должен сделать, чтобы создать свой собственный провайдер услуг для "cboden / ratchet"?Это вне моего опыта Laravel ...

Спасибо!

1 Ответ

0 голосов
/ 24 ноября 2018

Похоже на опечатку.Должно быть:

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
...