//{"type": "to_msg","data": {"id": 2,"msg": "你在家吗"}}
public static function onMessage($client_id, $data)
{
$result = json_decode($data, true);
switch ($result['type']) {
case 'game':
if (isset($_SESSION['time_start'])) {
return;
}
$count = 60;
$gate = new Gateway();
$_SESSION['time_start'] = $time_id = Timer::add(1, function () use (&$time_id, &$count, &$client_id, &$gate) {
$a = $count--;
//这里可以输出在控制台
print_r($a . PHP_EOL);
//推送用户不成功
$gate->sendtoCurrentClient($a);
// 运行10次后销毁当前定时器
if ($a < 1) {
Timer::del($time_id);
}
});
break;
default:
Gateway::sendtoCurrentClient("其余功能未开放");
break;
}
}
public static function onClose($client_id)
{
if (isset($_SESSION['time_start'])) {
Timer::del($_SESSION['time_start']);
}
}
}
public static function onMessage($client_id, $data)
{
$result = json_decode($data, true);
switch ($result['type']) {
case 'game':
if (isset($_SESSION['time_start'])) {
return;
}
$count = 60;
$_SESSION['time_start'] = $time_id = Timer::add(1, function () use (&$time_id, &$count,$client_id) {
$a = $count--;
// 运行10次后销毁当前定时器
if ($a < 1) {
Timer::del($time_id);
}
//使用sendToClient成功推送
Gateway::sendToClient($client_id, $a);
});
break;
}
}
1秒推送一次数据
对,我想要给用户推送倒计时,现在控制台可以输出,但是长连接用户那边接收不到
那你直接全部推送 先不做单用户的推送
可以了。感谢回答