将Ratchet WsServer与React SecureServer结合使用(WSS/SSL)
问题描述:
我们正试图通过安全连接(WSS)实现websocket,并在我们的项目中实现了cboden/ratchet。所有Works正常连接罚款。环顾文档和Github项目页面,似乎新的React SecureServer类尚未在Ratchet中实现。将Ratchet WsServer与React SecureServer结合使用(WSS/SSL)
在我们发现的问题a post about it,它将不被支持,直到后来的版本,但是,我们现在需要它:D 在问题报告中,他们建议使用新的React SecureServer类与Ratchet类组合。我们尝试并得到了一个致命的错误:
Catchable fatal error: Argument 1 passed to React\Socket\SecureServer::__construct() must be an instance of React\Socket\Server, instance of Ratchet\Http\HttpServer given.
部分地方出了问题:
$webServer = new Ratchet\Server\IoServer(
new React\Socket\SecureServer(// Using React class here as suggested
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
)
),
$webSock,
array(
'local_cert' => 'xxxx.pem',
'allow_self_signed' => true,
'verify_peer' => false
)
);
我们正在做一些愚蠢的事? :P
答
安全服务器应该围绕插座服务器要包装,而不是HTTP服务器:
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
)
),
new React\Socket\SecureServer(// Using React class here as suggested
$webSock,
$loop,
array(
'local_cert' => 'xxxx.pem',
'allow_self_signed' => true,
'verify_peer' => false
)
)
);
好的,Thx的响应。现在我收到第二个参数的错误:'可捕获的致命错误:传递给React \ Socket \ SecureServer :: __ construct()的参数2必须实现接口React \ EventLoop \ LoopInterface,React \ ZMQ \ Context的实例' – Brainfeeder
I假设'$ loop'是你存储事件循环的变量,所以你存储哪个变量,在那里使用它。 – WyriHaximus
啊,是的,我尝试使用$上下文,因为我认为它返回$循环实例。 服务器似乎现在再次运行...浏览器无法连接。我们收到一个'SSL_ERROR_NO_CYPHER_OVERLAP'错误代码。有没有办法指定使用哪种类型的加密? – Brainfeeder