我的问题是:一个多人在线的游戏房间里面,在onWorkerStart里开一个定时器监听玩家进入房间,当人数为大于2人的时候开始游戏,前端页面怎么接收到信息呢?前端onmessage里面好像是客户端主动发送的,能不能gateway主动发送呢?如果已经开始游戏了,那下一个人怎么实时看到游戏中的画面呢?下面这段代码是不是不对或者思路不对还是哪里不对,困扰了3天,每晚几乎没有睡,看了手册和社区里的问题都没有怎么明白,求大神指导,第一次接触workerman,谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢了。
public static function onWorkerStart($worker){
Timer::add(2, function(){
if(isset($_SESSION)){
// 获取房间在线人数
$roomId = $_SESSION;
$online = Gateway::getClientCountByGroup($roomId);
if($online>0){
//获取房间内所有用户列表
$clientsList = Gateway::getClientSessionsByGroup($roomId);
Gateway::sendToGroup($roomId, json_decode($message_data));
}
}else {
echo 2;
}
})
}
页面里也是用onmessage里收啊
主动发可以用定时器定时发过去
可以收费指导吗?QQ远程这样子
具体业务逻辑都写在onMessage里边。Timer是计时器,一般是控制别的功能,比如一局多长时间结束。