php - 实例化期间未提供 React Loop
问题描述
我正在尝试使用棘轮/反应来在 PHP 中创建安全套接字。我看过很多指南和文档,但我仍然不知道为什么这不起作用。
require dirname(__DIR__) . '/composer/vendor/autoload.php';
ini_set('display_errors', 'On');
use ChatApp\Chat;
require "Chat.php";
$loop = React\EventLoop\Factory::create();
$webSock = new React\Socket\Server('138.68.129.65:8443', $loop);
$webSock = new React\Socket\SecureServer($webSock, $loop, [
'local_cert' => 'absolute/path/to/cert.pem', // path to your cert
'local_pk' => 'absolute/path/to/to/key.pem', // path to your server private key
'allow_self_signed' => TRUE, // Allow self signed certs (should be false in production)
'verify_peer' => FALSE
]);
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Chat()
)
),
$webSock
);
$webServer->run();
这是代码,错误在第 70 行的 IoServer.php
public function run() {
if (null === $this->loop) {
throw new \RuntimeException("A React Loop was not provided during instantiation");
}
// @codeCoverageIgnoreStart
$this->loop->run();
// @codeCoverageIgnoreEnd
}
我检查了我的代码中的循环是否为空,但没有
解决方案
看来我从同一来源复制了相同的代码
在快速浏览源代码后,我发现您应该向 IoServer 构造函数添加第三个参数。所以最终的工作代码是:
require dirname(__DIR__) . '/composer/vendor/autoload.php';
ini_set('display_errors', 'On');
use ChatApp\Chat;
require "Chat.php";
$loop = React\EventLoop\Factory::create();
$webSock = new React\Socket\Server('138.68.129.65:8443', $loop);
$webSock = new React\Socket\SecureServer($webSock, $loop, [
'local_cert' => 'absolute/path/to/cert.pem', // path to your cert
'local_pk' => 'absolute/path/to/to/key.pem', // path to your server private key
'allow_self_signed' => TRUE, // Allow self signed certs (should be false in production)
'verify_peer' => FALSE
]);
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Chat()
)
),
$webSock,
$loop /** <--- here is the missing part */
);
$webServer->run();
推荐阅读
- javascript - 将值重新分配给使用解构创建的变量的正确方法?(数组解构)
- docker - 有没有办法通过 SSH 与在 docker 容器内运行的远程进程建立 JMX 连接?
- c++ - C++17:仍然使用枚举作为常量?
- reactjs - 在 React 项目中使用 JS 和 TS
- node.js - How to register a user in a hypaerledger fabric network using node sdk?
- fortran - MPI_TYPE_CREATE_STRUCT:无效的数据类型
- rest - WCF Rest Service 不带参数“#”
- deep-learning - 仅预测边界框
- mysql - mysql 5.7 如何将json数组提取到多列?
- python - Is there a way to reference the dataframe subset being changed with pandas?