wyrihaximus / react-opportunistic-tls
dev-main
2024-03-01 12:26 UTC
Requires
- php: ^8.2
- evenement/evenement: ^3.0
- react/dns: ^1.10
- react/event-loop: ^1.3
- react/promise: ^2 || ^3
- react/socket: ^1.12
- react/stream: ^1.2
Requires (Dev)
- react/promise-stream: ^1.4
- wyrihaximus/async-test-utilities: ^7.0.0
Conflicts
- azjezz/psl: <2
This package is auto-updated.
Last update: 2024-09-10 22:21:29 UTC
README
安装
要通过 Composer 安装,请使用以下命令,它将自动检测最新版本并将其绑定到 ^
。
composer require wyrihaximus/react-opportunistic-tls
用法
因为这个包是从 这个 PR 提取的,所以 API 与那里提出的相同。一旦 PR 被合并,任何使用此包的包中只需两行更改即可。我们,ReactPHP 核心团队,决定在合并 PR 之前先在一个包中测试它。主要原因是我们确保处理了大多数意外问题,因为这是一个棘手的问题。
客户端
$connector = new React\Socket\Connector(); $connector->connect('opportunistic+tls://example.com:5432/')->then(function (React\Socket\OpportunisticTlsConnectionInterface $startTlsConnection) { $connection->write('let\'s encrypt?'); return React\Promise\Stream\first($connection)->then(function ($data) use ($connection) { if ($data === 'yes') { return $connection->enableEncryption(); } return $stream; }); })->then(function (React\Socket\ConnectionInterface $connection) { $connection->write('Hello!'); });
服务器
$socket = new React\Socket\SocketServer('opportunistic+tls://127.0.0.1:8000', array( 'tls' => array( 'local_cert' => 'server.pem', 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_SERVER ) )); $server->on('connection', static function (OpportunisticTlsConnectionInterface $connection) use ($server) { return $connection->enableEncryption(); });
许可证
MIT 许可证 (MIT)
版权所有 (c) 2023 Cees-Jan Kiewiet
特此免费授予任何获得本软件及其相关文档副本(“软件”)的人权,无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许获得软件的人进行此类操作,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他原因,无论此类责任是否源于、因之而引起或与此类软件或软件的使用或其他操作有关。