Event.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. *
  4. *
  5. * @author walkor <worker-man@qq.com>
  6. *
  7. */
  8. require_once WORKERMAN_ROOT_DIR . 'applications/Game/Store.php';
  9. class Event
  10. {
  11. public static function onConnect($address, $socket_id, $sid)
  12. {
  13. // 检查sid是否合法
  14. $uid = self::getUidBySid($sid);
  15. // 不合法踢掉
  16. if(!$uid)
  17. {
  18. self::kickAddress($address, $socket_id);
  19. return;
  20. }
  21. // 合法记录uid到address的映射
  22. self::storeUidAddress($uid, $address);
  23. // 发送数据包到address,确认connection成功
  24. self::notifyConnectionSuccess($address, $socket_id, $uid);
  25. }
  26. public static function onClose($uid)
  27. {
  28. }
  29. public static function kickUid($uid)
  30. {
  31. }
  32. public static function kickAddress($address, $socket_id)
  33. {
  34. }
  35. public static function storeUidAddress($uid, $address)
  36. {
  37. Store::set($uid, $address);
  38. }
  39. public static function getAddressByUid($uid)
  40. {
  41. return Store::get($uid);
  42. }
  43. public static function deleteUidAddress($uid)
  44. {
  45. return Store::delete($uid);
  46. }
  47. protected static function notifyConnectionSuccess($address, $socket_id, $uid)
  48. {
  49. $buf = new GameBuffer();
  50. $buf->header['cmd'] = GameBuffer::CMD_GATEWAY;
  51. $buf->header['sub_cmd'] = GameBuffer::SCMD_CONNECT_SUCCESS;
  52. $buf->header['from_uid'] = $socket_id;
  53. $buf->header['to_uid'] = $uid;
  54. GameBuffer::sendToGateway($address, $buf->getBuffer());
  55. }
  56. protected static function getUidBySid($sid)
  57. {
  58. return $sid;
  59. }
  60. }