我做了一个小游戏,客户端向服务器发送 '{"type":"update","boatId":"20001","y":"10"}' json数据,服务端把y 值存到数组$POSITION中,如果有新的用户进入,会先发送 '{"type":"init"}',服务端判断type为init则吧数组中的数据发送到客户端。那么问题是:每次有新的客户端打开,或者刷新页面,客户端收到的数组数据总是会变。打印$POSITION发现值每次都不一定固定。怎么回事儿?
下面是我的代码
$POSITION = array('boat1' =>0,'boat2' =>0,'boat3' =>0);
class Event
{
public static function onMessage($client_id, $message)
{
global $POSITION;
// $message = '{"type":"update","boatId":"20001","y":"1"}'
$message_data = json_decode($message, true);
if(!$message_data)
{
return ;
}
switch($message_data)
{
case 'init':
Gateway::sendToAll(json_encode(array(
'type' => 'init',
'boat1' => $POSITION,
'boat2' => $POSITION,
'boat3' => $POSITION,
)));
return;
//更新数据
case 'update':
$boatId = $message_data;
$y = 10;
if($boatId != null){
switch($boatId){
case '20001' : $POSITION += $y; break;
case '20002' : $POSITION += $y; break;
case '20003' : $POSITION += $y; break;
}
}
Gateway::sendToAll($message);
return;
}
}
}