传递给 Ratchet\Session\SessionProvider::__construct() 的参数 1 必须实现接口 Ratchet\Http\HttpServerInterface
Posted
技术标签:
【中文标题】传递给 Ratchet\\Session\\SessionProvider::__construct() 的参数 1 必须实现接口 Ratchet\\Http\\HttpServerInterface【英文标题】:Argument 1 passed to Ratchet\Session\SessionProvider::__construct() must implement interface Ratchet\Http\HttpServerInterface传递给 Ratchet\Session\SessionProvider::__construct() 的参数 1 必须实现接口 Ratchet\Http\HttpServerInterface 【发布时间】:2018-11-23 11:58:03 【问题描述】:我正在尝试在 Ratchet 中使用 sessionProvider,以下是我的 shell 脚本:
namespace App\Console\Commands;
use Ratchet\Session\SessionProvider;
use Illuminate\Console\Command;
use Ratchet\Server\ioserver;
use App\Http\Controllers\WebSockets\Chat;
use Ratchet\WebSocket\WsServer;
use Ratchet\Http\HttpServer;
use Symfony\Component\HttpFoundation\Session\Storage\Handler;
class ChatShell extends Command
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:chat';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
parent::__construct();
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
$memcached = new \Memcached();
$server = IoServer::factory(
new HttpServer(
new WsServer(
new SessionProvider(
new Chat(),
new Handler\MemcachedSessionHandler($memcached)
)
)
),
6502
);
$server->run();
发生错误说:
传递给 Ratchet\Session\SessionProvider::__construct() 的参数 1 必须实现接口 Ratchet\Http\HttpServerInterface,给定 App\Http\Controllers\WebSockets\Chat 的实例
如何解决这个问题!
我的聊天类实现MessageComponentInterface
。
【问题讨论】:
【参考方案1】:好的,经过长时间的搜索,我找到了解决方案,尽管ratchet document 说 sessionProvider 被 WsServer 包装,但 sessionProvider 应该 包装 WsServer。
扭曲应该是这样的:
IoServer::factory(
new HttpServer(
new SessionProvider(
new WsServer(
new Chat()
),
new Handler\MemcachedSessionHandler($memcached)
)
),
6502
);
【讨论】:
以上是关于传递给 Ratchet\Session\SessionProvider::__construct() 的参数 1 必须实现接口 Ratchet\Http\HttpServerInterface的主要内容,如果未能解决你的问题,请参考以下文章
如何将对象数组作为道具传递给组件,然后将数组的成员作为道具传递给嵌套组件?