IndexController.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Kele;
  4. use App\Workerman\Events;
  5. use GatewayWorker\BusinessWorker;
  6. use GuzzleHttp\Client;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Log;
  9. use Workerman\Worker;
  10. use GatewayWorker\Lib\Gateway;
  11. class IndexController extends Controller
  12. {
  13. public function index($data){
  14. $kele=Kele::find(1);
  15. $kele->name=$data;
  16. $kele->save();
  17. }
  18. public function websocket(){
  19. dd(1);
  20. // $client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1);
  21. //
  22. //// 推送的数据,包含uid字段,表示是给这个uid推送
  23. //
  24. // $data = array('uid'=>'uid1', 'percent'=>'88%');
  25. //
  26. //// 发送数据,注意5678端口是Text协议的端口,Text协议需要在数据末尾加上换行符
  27. //
  28. // fwrite($client, json_encode($data)."\n");
  29. //
  30. //// 读取推送结果
  31. //
  32. // echo fread($client, 8192);
  33. // 转发消息给对应的客户端
  34. // Gateway::sendToAll(['content']);
  35. // $re=new Events();
  36. // $re->broadcast('sdfasd');
  37. $message='{"cmd":"ping","sn":"T69174","timestamp":1682491407}';
  38. $id='7f00000108fd00000001';
  39. // \GatewayWorker\Lib\Gateway::sendToCurrentClient($message);
  40. Gateway::sendToUid($id,$message);
  41. Gateway::sendToClient($id,$message);
  42. dd(json_decode($message,true));
  43. }
  44. /*
  45. * 判断onMessage类型
  46. * ***/
  47. public function JudgeMessage($client_id,$message){
  48. try {
  49. $re=json_decode($message,true);
  50. if (!isset($re['cmd'])){
  51. Gateway::sendToClient($client_id,$message);
  52. }
  53. if ($re['cmd']=='declare'){
  54. $this->declare($client_id,$re);
  55. }elseif ($re['cmd']=='ping'){
  56. $this->ping($client_id,$re);
  57. }elseif($re['cmd']=='to_client'){
  58. $data=$re['data'];
  59. switch ($data['cmd']){
  60. case 'addUserRet'://下发人员信息
  61. $this->addUserRet($client_id,$re);
  62. break;
  63. case 'delAllUserRet'://删除全部信息的处理
  64. $this->delAllUserRet($client_id,$data);
  65. default:
  66. $this->delAllUserRet($client_id,$data);
  67. break;
  68. }
  69. }
  70. }catch (\Exception $exception){
  71. Log::error('出错了啊:'.$exception->getMessage());
  72. Gateway::sendToClient($client_id,$message);
  73. }
  74. }
  75. /*
  76. * 心跳
  77. * ***/
  78. public function ping($client_id,$data){
  79. $message=[
  80. 'cmd'=>'pong'
  81. ];
  82. Log::error($client_id.'这是心跳'.json_encode($data));
  83. Gateway::sendToClient($client_id,json_encode($message));
  84. //将设备信息记录下来
  85. $url='http://api.szy.admin.cliu.cc/api/ws/ping?sn='.$data['sn'].'&time='.$data['timestamp'].'&client_id='.$client_id;
  86. $client=new Client();
  87. $client->get($url);
  88. }
  89. /*
  90. * 第一次连接
  91. * **/
  92. public function declare($client_id,$data){
  93. $message=[
  94. 'cmd'=>'declare',
  95. 'message'=>'success'
  96. ];
  97. Log::error('这是第一次连接'.json_encode($data));
  98. //应该不用返回信息
  99. Gateway::sendToClient($client_id,json_encode($message));
  100. //将设备信息记录下来
  101. $url='http://api.szy.admin.cliu.cc/api/ws/device?sn='.$data['sn'].'&time='.$data['timestamp'].'&client_id='.$client_id;
  102. $client=new Client();
  103. $client->get($url);
  104. }
  105. /*
  106. * 下发人员信息时返回的信息
  107. * ***/
  108. public function addUserRet($client_id,$data){
  109. // Log::error('这是下发人员信息:client_id:'.$client_id);
  110. // Log::error($data);
  111. if ($data['data']['code']!=0){
  112. //下发人员信息不成功的逻辑处理
  113. Log::error('不成功');
  114. //将设备信息记录下来
  115. $url='http://api.szy.admin.cliu.cc/api/ws/SendError?sn='.$data['form'].'&phone='.$data['data']['user_id'].'&client_id='.$client_id;
  116. $client=new Client();
  117. $client->get($url);
  118. }else{
  119. //下发成功的逻辑处理
  120. $url='http://api.szy.admin.cliu.cc/api/ws/SendSucc?sn='.$data['form'].'&phone='.$data['data']['user_id'].'&client_id='.$client_id;
  121. $client=new Client();
  122. $client->get($url);
  123. }
  124. }
  125. /*
  126. * 全部删除,返回信息
  127. * ****/
  128. public function delAllUserRet($client_id,$data){
  129. Log::error($data);
  130. if ($data['code']==0){
  131. Log::error('删除全部信息成功!');
  132. }
  133. }
  134. public function demos(){
  135. $index=new TcpController();
  136. $index->Accept(14321,'FA73502771890126,http://fangw.jiuweiyun.cn/api/auth/230329143852O2TNZGM_0000 CL1685698345ED');
  137. }
  138. }