配置选项
最后更新于:2022-04-02 06:37:32
# 配置选项
[TOC]
`Client`可以使用`set`方法设置一些选项,启用某些特性。
## 作用范围
* `Swoole\Client`
* `Swoole\Http\Client`
* `Swoole\Coroutine\Client`
* `Swoole\Coroutine\Http\Client`
* `Swoole\Coroutine\Http2\Client`
## 结束符检测
~~~
$client->set(array(
'open_eof_check' => true,
'package_eof' => "\r\n\r\n",
'package_max_length' => 1024 * 1024 * 2,
))
~~~
## 长度检测
~~~
$client->set(array(
'open_length_check' => 1,
'package_length_type' => 'N',
'package_length_offset' => 0, //第N个字节是包长度的值
'package_body_offset' => 4, //第几个字节开始计算长度
'package_max_length' => 2000000, //协议最大长度
));
~~~
## MQTT协议
启用`MQTT`协议解析,`onReceive`回调将收到完整的`MQTT`数据包。
~~~
$client->set(array(
'open_mqtt_protocol' => true,
));
~~~
## Socket缓存区尺寸
~~~
$client->set(array(
'socket_buffer_size' => 1024*1024*2, //2M缓存区
));
~~~
> 包括`socket`底层操作系统缓存区、应用层接收数据内存缓存区、应用层发送数据内存缓冲区
## 关闭Nagle合并算法
~~~
$client->set(array(
'open_tcp_nodelay' => true,
));
~~~
## SSL/TLS证书
~~~
$client->set(array(
'ssl_cert_file' => $your_ssl_cert_file_path,
'ssl_key_file' => $your_ssl_key_file_path,
));
~~~
> swoole-1.7.21或更高版本可用
## 绑定IP和端口
> 仅设置`bind_port`是无效的,请同时设置`bind_port`和`bind_address`
* 机器有多个网卡的情况下,设置`bind_address`参数可以强制客户端`Socket`绑定某个网络地址。
* 设置`bind_port`可以使客户端Socket使用固定的端口连接到外网服务器
~~~
$client->set(array(
'bind_address' => '192.168.1.100',
'bind_port' => 36002,
));
~~~
## Socks5代理设置
> 仅设置一个选项是无效的, 每次必须设置`host`和`port`
~~~
$client->set(array(
'socks5_host' => '192.168.1.100',
'socks5_port' => 1080,
'socks5_username' => 'username',
'socks5_password' => 'password',
));
~~~
* `socks5_username`、`socks5_password`为可选参数
## 使用说明
* 目前支持open\_length\_check和open\_eof\_check2种自动协议处理功能,参考swoole\_server中的配置选项
* 启用了自动协议后,同步阻塞客户端recv方法将不接受长度参数,每次必然返回一个完整的数据包
* 启用了自动协议后,异步非阻塞客户端onReceive每次必然返回一个完整的数据包
';