ekstazi / websocket-stream-client-amphp
为 websocket 流客户端实现的 amphp/websocket-client 适配器。
2.1
2020-04-09 15:59 UTC
Requires
- php: >=7.2
- amphp/websocket-client: ^1
- ekstazi/websocket-common-amphp: ^2.0
- ekstazi/websocket-stream-client: ^2.0
- psr/container: ^1.0
Requires (Dev)
- amphp/php-cs-fixer-config: dev-master
- amphp/phpunit-util: ^1.1
- phpunit/phpunit: ^8 || ^7
Provides
README
ekstazi/websocket-stream-client-amphp
是基于 amphp/websocket-client
的 ekstazi/websocket-stream-client
实现
安装
此包可以作为 Composer 依赖项安装。
composer require ekstazi/websocket-stream-client-amphp
要求
PHP 7.2+
用法
使用容器
如果您有容器,请将以下内容添加到您的 container.php
use Amp\Websocket\Options; use \ekstazi\websocket\client\amphp\ConnectorFactory; use \ekstazi\websocket\client\ConnectionFactory; // .... return [ ConnectionFactory::class => new ConnectorFactory(), // this is optional config for default options to connections "config" => [ "websocket" => [ 'clientOptions' => Options::createClientDefault(), ] ] ];
然后在您的代码中
use \Psr\Container\ContainerInterface; use \ekstazi\websocket\client\ConnectionFactory; use \Psr\Http\Message\RequestInterface; use \ekstazi\websocket\client\Connection; /** @var ContainerInterface $container */ /** @var ConnectionFactory $connector */ /** @var RequestInterface $request */ $connector = $container->get(ConnectionFactory::class); /** @var Connection $stream */ $stream = yield $connector->connect($request, Connection::MODE_BINARY);
不使用容器
您可以使用函数来完成相同的功能
use \Psr\Http\Message\RequestInterface; use \ekstazi\websocket\client\Connection; use function \ekstazi\websocket\client\connect; /** @var RequestInterface $request */ /** @var Connection $stream */ $stream = yield connect($request, Connection::MODE_BINARY);
或
use \ekstazi\websocket\client\ConnectionFactory; use \Psr\Http\Message\RequestInterface; use \ekstazi\websocket\client\Connection; use function \ekstazi\websocket\client\connector; /** @var RequestInterface $request */ /** @var ConnectionFactory $connector */ $connector = connector(); /** @var Connection $stream */ $stream = yield $connector->connect($request, Connection::MODE_BINARY);
向连接传递额外的选项
use Amp\Websocket\Options; use \ekstazi\websocket\client\ConnectionFactory; use \Psr\Http\Message\RequestInterface; use \ekstazi\websocket\client\Connection; use function \ekstazi\websocket\client\connector; /** @var RequestInterface $request */ /** @var ConnectionFactory $connector */ $connector = connector(); /** @var Connection $stream */ $stream = yield $connector->connect($request, Connection::MODE_BINARY, Options::createClientDefault()->withoutHeartbeat());
为所有连接设置默认选项
默认选项可以像上述示例中那样覆盖
use Amp\Websocket\Options; use ekstazi\websocket\client\amphp\Connector; use \ekstazi\websocket\client\ConnectionFactory; use \Psr\Http\Message\RequestInterface; use \ekstazi\websocket\client\Connection; /** @var RequestInterface $request */ /** @var ConnectionFactory $connector */ $connector = new Connector(null, Options::createClientDefault()); /** @var Connection $stream */ $stream = yield $connector->connect($request, Connection::MODE_BINARY);