GameWorker.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. /**
  3. *
  4. * 处理具体聊天逻辑
  5. * 1、查询某用户内网通信gateway ip及端口
  6. * 2、向某用户对应内网gateway ip及端口发送数据
  7. *
  8. * @author walkor <worker-man@qq.com>
  9. *
  10. */
  11. require_once WORKERMAN_ROOT_DIR . 'Core/SocketWorker.php';
  12. require_once WORKERMAN_ROOT_DIR . 'Applications/GameBuffer.php';
  13. require_once WORKERMAN_ROOT_DIR . 'Applications/Store.php';
  14. class GameWorker extends WORKERMAN\Core\SocketWorker
  15. {
  16. protected $data = array();
  17. public function dealInput($recv_str)
  18. {
  19. return GameBuffer::input($recv_str, $this->data);
  20. }
  21. public function dealProcess($recv_str)
  22. {
  23. if(!isset(GameBuffer::$cmdMap[$this->data['cmd']]) || !isset(GameBuffer::$scmdMap[$this->data['sub_cmd']]))
  24. {
  25. $this->notice('cmd err ' . serialize($this->data) );
  26. return;
  27. }
  28. $class = GameBuffer::$cmdMap[$this->data['cmd']];
  29. $method = GameBuffer::$scmdMap[$this->data['sub_cmd']];
  30. if(!method_exists($class, $method))
  31. {
  32. $this->notice("cmd err $class::$method not exists");
  33. return;
  34. }
  35. call_user_func_array(array($class, $method), $this->data);
  36. }
  37. }