CmdInf.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace app\logic\cmdpro;
  3. /**
  4. * Created by PhpStorm.
  5. * User: Administrator
  6. * Date: 2019/5/21
  7. * Time: 16:48
  8. */
  9. /*
  10. Swoole\Server\Task Object
  11. (
  12. [data] => Swoole\WebSocket\Frame Object
  13. (
  14. [fd] => 1
  15. [data] => {'cmd':'xxx','act'=>'xxx','data':'xxxx','time':xxxx,'token':xxx}
  16. [opcode] => 1
  17. [finish] => 1
  18. )
  19. [id] => 0
  20. [worker_id] => 2
  21. [flags] => 6
  22. )
  23. data:
  24. {'cmd':'xxx','act'=>'xxx','data':'xxxx','time':xxxx,'token':xxx}
  25. **/
  26. use app\lib\DataPack;
  27. use app\lib\Wlog;
  28. class CmdInf
  29. {
  30. public function paraCmd($serv, \Swoole\Server\Task $task){
  31. $fd = $task->data->fd;
  32. $dataPack = json_decode($task->data->data, true);
  33. $method = isset($dataPack['act']) ? $dataPack['act'] : '';
  34. if (empty($method) || !(method_exists($this, $method))) {
  35. $this->sendTo($serv, $fd, DataPack::toJson(['mtype' => 'error', 'data' => '无效的参数']), true);
  36. return;
  37. }
  38. try{
  39. return $this->$method($serv,$task);
  40. }catch (\Exception $e){
  41. echo "发生异常或错误:".$e->getFile().' '.$e->getLine().' '.$e->getCode().' '.$e->getMessage()."\r\n";
  42. return ;
  43. }
  44. }
  45. //单发
  46. public function sendTo($serv,$fd,$dataString,$close=false)
  47. {
  48. $serv->push($fd,$dataString);
  49. if ($close){
  50. $serv->disconnect($fd);
  51. }
  52. return true;
  53. }
  54. //在线广播
  55. public function onlineBroad($serv,$dataString){
  56. foreach($serv->connections as $fd)
  57. {
  58. $serv->push($fd,$dataString);
  59. }
  60. }
  61. }