• 4
  • 新人请关照

swoole websocket 客户端是否支持数据gzip解压?

问题描述

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.

阅读 519
评论
    2 个回答
    • 4
    • 新人请关照
      • 3
      • 新人请关照
        撰写回答

        登录后参与交流、获取后续更新提醒