问题描述
Version 4.3.1
websocket服务端返回的所有数据都进行了 GZIP 压缩,需要 client 在收到数据之后需要进行解压
相关代码
go(function () {
$cli = new Co\http\Client("api.huobi.pro", 443, true);//需要上vpn
$ret = $cli->upgrade("/ws");
var_dump($cli->statusCode);
if ($ret) {
while (true) {
var_dump($cli->push('{"sub": "market.btcusdt.kline.1min"}'));
var_dump($cli->recv());
co::sleep(1);
}
}
});
你期待的结果是什么?实际看到的错误信息又是什么?
运行结果和我的理解
int(101) #连接成功
bool(true) #发送数据成功
bool(false) #$cli->recv()失败,怀疑是不是返回的是gzip数据,导致的失败
接着连接断开,握手失败错误信息
A PHP Error was encountered
Severity: Warning
Message: SwooleCoroutineHttpClient::push(): websocket handshake failed, cannot push data.
至于原因看这里 https://wiki.swoole.com/wiki/...