Coroutine\Http2\Client->write
最后更新于:2022-04-02 06:27:44
# Coroutine\\Http2\\Client->write
[TOC]
向服务器发送更多数据帧,可以多次调用`write`向同一个`stream`写入数据帧。
~~~
function Coroutine\Http2\Client->write(int $streamId, mixed $data, bool $end = false);
~~~
* `$streamId`流编号,由`send`方法返回
* `$data`数据帧的内容,可以为字符串或数组
* `$end`是否关闭流
## 注意事项
* 如果要使用`write`分段发送数据帧,必须在`send`请求时将`$request->pipeline`设置为`true`
* 当发送`end`为`true`的数据帧之后,流将关闭。之后不能再调用`write`向此`stream`发送数据
## 使用实例
~~~
use Swoole\Coroutine as co;
co::create(function () use ($fp)
{
$cli = new co\Http2\Client('127.0.0.1', 9518);
$cli->set([ 'timeout' => 1]);
var_dump($cli->connect());
$req3 = new co\Http2\Request;
$req3->path = "/index.php";
$req3->headers = [
'host' => "localhost",
"user-agent" => 'Chrome/49.0.2587.3',
'accept' => 'text/html,application/xhtml+xml,application/xml',
'accept-encoding' => 'gzip',
];
$req3->pipeline = true;
$req3->method = "POST";
$streamId = $cli->send($req3);
$cli->write($streamId, ['int' => rand(1000, 9999)]);
$cli->write($streamId, ['int' => rand(1000, 9999)]);
//end stream
$cli->write($streamId, ['int' => rand(1000, 9999), 'end' => true], true);
var_dump($cli->recv());
$cli->close();
});
~~~
';