name=$data; $kele->save(); } public function websocket(){ dd(1); // $client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1); // //// 推送的数据,包含uid字段,表示是给这个uid推送 // // $data = array('uid'=>'uid1', 'percent'=>'88%'); // //// 发送数据,注意5678端口是Text协议的端口,Text协议需要在数据末尾加上换行符 // // fwrite($client, json_encode($data)."\n"); // //// 读取推送结果 // // echo fread($client, 8192); // 转发消息给对应的客户端 // Gateway::sendToAll(['content']); // $re=new Events(); // $re->broadcast('sdfasd'); $message='{"cmd":"ping","sn":"T69174","timestamp":1682491407}'; $id='7f00000108fd00000001'; // \GatewayWorker\Lib\Gateway::sendToCurrentClient($message); Gateway::sendToUid($id,$message); Gateway::sendToClient($id,$message); dd(json_decode($message,true)); } /* * 判断onMessage类型 * ***/ public function JudgeMessage($client_id,$message){ try { $re=json_decode($message,true); if (!isset($re['cmd'])){ Gateway::sendToClient($client_id,$message); } if ($re['cmd']=='declare'){ $this->declare($client_id,$re); }elseif ($re['cmd']=='ping'){ $this->ping($client_id,$re); }elseif($re['cmd']=='to_client'){ $data=$re['data']; switch ($data['cmd']){ case 'addUserRet'://下发人员信息 $this->addUserRet($client_id,$re); break; case 'delAllUserRet'://删除全部信息的处理 $this->delAllUserRet($client_id,$data); default: $this->delAllUserRet($client_id,$data); break; } } }catch (\Exception $exception){ Log::error('出错了啊:'.$exception->getMessage()); Gateway::sendToClient($client_id,$message); } } /* * 心跳 * ***/ public function ping($client_id,$data){ $message=[ 'cmd'=>'pong' ]; Log::error($client_id.'这是心跳'.json_encode($data)); Gateway::sendToClient($client_id,json_encode($message)); //将设备信息记录下来 $url='http://api.szy.admin.cliu.cc/api/ws/ping?sn='.$data['sn'].'&time='.$data['timestamp'].'&client_id='.$client_id; $client=new Client(); $client->get($url); } /* * 第一次连接 * **/ public function declare($client_id,$data){ $message=[ 'cmd'=>'declare', 'message'=>'success' ]; Log::error('这是第一次连接'.json_encode($data)); //应该不用返回信息 Gateway::sendToClient($client_id,json_encode($message)); //将设备信息记录下来 $url='http://api.szy.admin.cliu.cc/api/ws/device?sn='.$data['sn'].'&time='.$data['timestamp'].'&client_id='.$client_id; $client=new Client(); $client->get($url); } /* * 下发人员信息时返回的信息 * ***/ public function addUserRet($client_id,$data){ // Log::error('这是下发人员信息:client_id:'.$client_id); // Log::error($data); if ($data['data']['code']!=0){ //下发人员信息不成功的逻辑处理 Log::error('不成功'); //将设备信息记录下来 $url='http://api.szy.admin.cliu.cc/api/ws/SendError?sn='.$data['form'].'&phone='.$data['data']['user_id'].'&client_id='.$client_id; $client=new Client(); $client->get($url); }else{ //下发成功的逻辑处理 $url='http://api.szy.admin.cliu.cc/api/ws/SendSucc?sn='.$data['form'].'&phone='.$data['data']['user_id'].'&client_id='.$client_id; $client=new Client(); $client->get($url); } } /* * 全部删除,返回信息 * ****/ public function delAllUserRet($client_id,$data){ Log::error($data); if ($data['code']==0){ Log::error('删除全部信息成功!'); } } public function demos(){ $index=new TcpController(); $index->Accept(14321,'FA73502771890126,http://fangw.jiuweiyun.cn/api/auth/230329143852O2TNZGM_0000 CL1685698345ED'); } }