AppGameServiceProvider.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace App\Module\AppGame\Providers;
  3. use App\Module\AppGame\Events\LoginSuccessEvent;
  4. use App\Module\AppGame\Events\ProtobufResponseEvent;
  5. use App\Module\AppGame\HttpControllers\JsonController;
  6. use App\Module\AppGame\HttpControllers\ProtobufController;
  7. use App\Module\AppGame\Listeners\AppGameProtobufResponseListener;
  8. use Illuminate\Support\ServiceProvider;
  9. use Illuminate\Support\Facades\Event;
  10. use Illuminate\Support\Facades\Route;
  11. /**
  12. * AppGame模块服务提供者
  13. *
  14. * 负责注册AppGame模块的事件监听器、命令和其他服务
  15. */
  16. class AppGameServiceProvider extends ServiceProvider
  17. {
  18. /**
  19. * 事件到监听器的映射
  20. *
  21. * @var array<class-string, array<int, class-string>>
  22. */
  23. protected $listen = [
  24. ProtobufResponseEvent::class => [
  25. AppGameProtobufResponseListener::class
  26. ],
  27. LoginSuccessEvent::class => [
  28. ],
  29. ];
  30. /**
  31. * 注册服务
  32. */
  33. public function register(): void
  34. {
  35. // 注册命令或其他服务
  36. }
  37. /**
  38. * 启动服务
  39. */
  40. public function boot(): void
  41. {
  42. // 注册事件监听器
  43. foreach ($this->listen as $event => $listeners) {
  44. foreach ($listeners as $listener) {
  45. Event::listen($event, $listener);
  46. }
  47. }
  48. // 注册中间件
  49. $this->app['router']->aliasMiddleware('login.check', \App\Module\AppGame\Middleware\LoginCheck::class);
  50. // 注册路由
  51. $this->registerRoutes();
  52. }
  53. /**
  54. * 注册模块路由
  55. */
  56. protected function registerRoutes(): void
  57. {
  58. // 注册 Protobuf 路由
  59. Route::post('/gameapi', [ProtobufController::class, 'gameapi']);
  60. Route::get('/json/{key}.json', [JsonController::class, 'config']);
  61. // 注册 Proto 调试路由
  62. Route::prefix('proto-debug')->group(function () {
  63. Route::get('/json', [\App\Module\AppGame\HttpControllers\ProtoDebugController::class, 'showJson']);
  64. Route::get('/binary', [\App\Module\AppGame\HttpControllers\ProtoDebugController::class, 'showBinary']);
  65. Route::get('/base64', [\App\Module\AppGame\HttpControllers\ProtoDebugController::class, 'showBase64']);
  66. });
  67. }
  68. }