{{{php
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->set(array(
'open_eof_check' => true,
'open_eof_split' => true, //打开EOF_SPLIT检测,就解决了
'package_eof' => "\r\n",
));
//注册连接成功回调
$client->on("connect", function($cli) {
$cli->send("hello world\r\n");
});
$timeout_heater = time();
$tick_heater = Swoole\Timer::tick(1000 * 3, function () use ($client,&$timeout_heater,&$tick_heater) {
$client->send("ping\r\n");
if((time() - $timeout_heater) >10){
echo "心跳检测超时";
$client->close();
Swoole\Timer::clear($tick_heater);
}
});
//注册数据接收回调
$client->on("receive", function($cli, $data) use(&$timeout_heater){
$data = trim($data);
if($data == "pong"){
$timeout_heater = time();
}else{
var_dump($data);
}
});
Swoole\Timer::tick(1000 * 2, function () use (&$client) {
$client->send("hello2\r\n");
});
Swoole\Timer::tick(1000 * 2, function () use (&$client) {
$client->send("hello1\r\n");
});
}}}
//运行结果
string(14) "Server: hello2"
string(30) "Server: hello2
Server: hello1"
string(30) "Server: hello2
Server: hello1"
string(20) "Server: hello1
pong"
string(14) "Server: hello2"
string(30) "Server: hello2
Server: hello1"
string(30) "Server: hello2
Server: hello1"
string(20) "Server: hello1
pong"
string(14) "Server: hello2"
string(30) "Server: hello2
Server: hello1"
string(30) "Server: hello2
Server: hello1"