0

问题描述

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.

Andy 2
2019-04-26 提问

1 个回答

0

已采纳
$settings = ['websocket_mask' => true];
$cli->set($settings);

至于原因看这里 https://wiki.swoole.com/wiki/...

推广链接