求帮助解释一下代码
新鲜的菜鸟 2018-06-19 02:45:40 求帮忙解释一下,我这个是从APP端接收数据的代码,帮忙解释一下接收的数据是存在哪个数组里面的
<?php
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Worker;
require 'workerman/Autoloader.php';
$androidClient = NULL;
$webClient = NULL;
$XV0 = $XV1 = 0;
$YV0= $YV1 = 0;
$XS0=$XS1=$YS0=$YS1 = 0;
$Xa0 = $Ya0 = 0;
// 创建一个Worker监听9090端口,使用websocket协议通讯
$ws_worker = new Worker("websocket://0.0.0.0:9090");
// 启动4个进程对外提供服务
$ws_worker->count = 1;
// 当收到客户端发来的数据后
$ws_worker->onMessage = function($connection, $data)
{
//这里用global的原因是:php是有作用域的,我们是在onMessage这个回调还是里操作外面的数组
//想要改变作用域外面的数组,就global一下
global $androidClient;
global $webClient;
global $XV0;
global $XV1;
global $YV0;
global $YV1;
global $XS0;
global $XS1;
global $YS0;
global $YS1;
global $Xa0;
global $Ya0;
global $Ax;
global $Ay;
global $Az;
global $pitch;
global $roll;
global $yaw;
global $Sx;
global $Sy;
// echo $data;
//验证客户端type
if(preg_match('/^type:(.*?)/isU',$data,$result)){ //代表是客户端认证
$type = $result[1];
if($type=="web"){ //必须是之前没有注册过
//存储新登录用户的数据
$webClient = $connection;
$webClient->send("connect success");
echo "web connect\n";
}
elseif ($type == "android") {
$androidClient = $connection;
echo "android connect\n";
}
}elseif(preg_match('/^msg:(.*?)/isU',$data,$msgset)){ //代表是客户端发送的普通消息
// echo $data + "\n";
if($webClient != NULL){ //必须是之前验证通过的客户端
//echo 'get msg:' . $msgset[1] .PHP_EOL; //这是为了演示,控制台打印信息
//数据格式:ax,ay,az,rx,ry,rz
//$aX =
$values = explode(";",$msgset[1]);
$Sx = $values[3];
$Sy = $values[4];
echo 'get msg:' . $msgset[1] ." [".$Sx ."] "." [".$Sy ."] ".PHP_EOL; //这是为了演示,控制台打印信息
$webClient->send( $Sx .";" . $Sy ); //发送数据给客户端
}
}
// 设置连接的onClose回调
$connection->onClose = function($connection) //客户端主动关闭
{
global $androidClient;
global $webClient;
global $XV1;
global $YV0;
global $YV1;
global $XS0;
global $XS1;
global $YS0;
global $YS1;
if($connection == $androidClient)
{
$androidClient = NULL;
$XV0 = $XV1 = 0;
$YV0= $YV1 = 0;
$XS0=$XS1=$YS0=$YS1 = 0;
echo "android closed\n";
}
elseif($connection == $webClient)
{
$webClient = NULL;
echo "web closed\n";
}
};
};
// 运行worker
Worker::runAll();