ekstazi/websocket-stream-client-amphp

为 websocket 流客户端实现的 amphp/websocket-client 适配器。

2.1 2020-04-09 15:59 UTC

This package is auto-updated.

Last update: 2024-09-10 02:12:37 UTC


README

ekstazi/websocket-stream-client-amphp 是基于 amphp/websocket-clientekstazi/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);