<?php
Co\run(function () {
$client = new Swoole\Coroutine\Client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 19501, 0.5)) {
// 连接失败后,不可直接进行重连。必须使用 close 关闭已有 socket,然后再进行 connect 重试。
echo "connect failed. Error: {$client->errCode}\n";
//关闭已有socket
// $client->close();
// //重试
// $client->connect('127.0.0.1', 19501);
//获取连接状态,true为已经连接到服务器,false未连接到服务器
// $client->isConnected();
}
//发送数据,当为true时表示发送成功,false是发送失败
$client->send("hello world\n");
//recv 方法用于从服务器端接收数据。
while (true) {
$data = $client->recv();
if (strlen($data) > 0) {
echo "收到服务器返回数据是".$data;
$client->send(time() . PHP_EOL);
} else {
if ($data === '') {
// 全等于空 直接关闭连接
$client->close();
break;
} else {
if ($data === false) {
// 可以自行根据业务逻辑和错误码进行处理,例如:
// 如果超时时则不关闭连接,其他情况直接关闭连接
if ($client->errCode !== SOCKET_ETIMEDOUT) {
$client->close();
break;
}
} else {
$client->close();
break;
}
}
}
\Co::sleep(1);
}
});