🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Coroutine\\Client->connect [TOC] 连接到远程服务器,函数原型: ~~~ bool $swoole_client->connect(string $host, int $port, float $timeout = 0.5, int $sock_flag = 0) ~~~ connect方法接受4个参数: * `$host`是远程服务器的地址,`2.0.12`或更高版本可直接传入域名,底层会自动进行协程切换解析域名为`IP`地址 * `$port`是远程服务器端口 * `$timeout`是网络`IO`的超时时间,包括`connect/send/recv`,单位是秒`s`,支持浮点数。默认为`0.5s`,即`100ms`,超时发生时,连接会被自动`close`掉 * `connect`操作会有一次协程切换开销,`connect`发起时`yield`,完成时`resume` > 原先异步客户端不支持`recv`超时,现在协程版已经支持超时,复用上面的`$timeout`参数 ## 使用实例 `connect`不会发生阻塞,`connect`事件触发后,切回`PHP`上下文。 ~~~ if ($cli->connect('127.0.0.1', 9501)) { $cli->send("data"); } else { echo "connect failed."; } ~~~ 如果连接失败,会返回`false` > 超时后返回,检查`$cli->errCode`为`110` ## 失败重试 `connect`连接失败后,不可直接进行重连。必须使用`close`关闭已有`socket`,然后再进行`connect`重试。 ~~~ //连接失败 if ($cli->connect('127.0.0.1', 9501) == false) { //关闭已有socket $cli->close(); //重试 $cli->connect('127.0.0.1', 9501); } ~~~