我正在尝试从YouTube的教程中创建一个基本的websocket聊天,当我运行
php bin/server.php
致命错误:在第6行的/var/www/html/websocket/bin/ line .php中找不到接口'Ratchet\MessageComponentInterface‘
我的chat.php代码如下:
<?php
namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class chat implements MessageComponentInterface
{
protected $clients;
public function __construct()
{
$this->clients=new \SplObjectStorage;
}
public function onOpen(ConnectionInterface $conn)
{
$this->clients->attach($conn);
}
public function onClose(ConnectionInterface $conn)
{
$this->clients->detach($conn);
}
public function onMessage(ConnectionInterface $conn,$msg)
{
foreach($this->clients as $client){
if($client !==$conn){
$client->send($msg);
}
}
}
public function onError(ConnectionInterface $conn, \Exception $e)
{
echo "the following error occured: ".$e->getMessage();
$conn->close();
}
}
Server.php代码:
<?php
require 'chat.php';
require __DIR__ .'/vendor/autoload.php';
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
$server=IoServer::factory(new HttpServer(new WsServer (new chat())) , 8080);
$server->run();
任何帮助都将不胜感激。
发布于 2017-04-08 00:55:21
在使用Ratchet\MessageComponentInterface
之前,包含包含自动加载的所有定义的autoload.php文件。
在定义名称空间后立即包含以下代码片段:
require dirname(__DIR__) . '/vendor/autoload.php';
发布于 2018-06-15 22:49:53
转到composer.json并更改
{
"require": {
"cboden/ratchet": "^0.4"
}
}
至
{
"autoload": {
"psr-4": {
"MyApp\\": "src"
}
},
"require": {
"cboden/ratchet": "^0.4"
}
}
并打开带有管理的升级命令更新作曲器,如下所示
composer update
您必须位于composer.json所在的同一文件夹目录中
https://stackoverflow.com/questions/34378161
复制相似问题