# websocket-action-dispatcher **Repository Path**: pandaes/websocket-action-dispatcher ## Basic Information - **Project Name**: websocket-action-dispatcher - **Description**: websocket请求分发组件 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-07-19 - **Last Updated**: 2021-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 请求分发组件 (依赖 spring) ## 组件功能 * 使用此组件需在SpringBoot主类上添加注解 @ActionComponentScan, 并指定扫描路径 * 开发者可通过给指定类和方法添加注解 @ReqAction(module="xxx") & @ReqMethod(cmd="xxx"), 以此来注册一个处理方法 * 插件会自动将所有处理方法缓存在 ActionDispatcher 的 handlerMap 中, 对应的key为 根据 module和cmd 构造的 ReqNames 对象 * 指定bean只需要注入 ActionDispatcher 即可根据 module 和 cmd 动态的调用指定方法 * 主要用于根据websocket消息内容分发至相应请求 ## 案例 * 详见test代码 * 游戏分发服务(gate)模块的action包 * 游戏逻辑服务(server)模块的action包 ## 需要注意的地方 * 处理方法的注册在 CommandLineRunner 机制中完成, 优先级为0, 默认的 CommandLineRunner 优先级为 Integer.MIN_VALUE 所以注册功能并不是在启动完成就是就绪状态, 需要注意调用的时机. 详见 ActionInitializer * @ReqAction 与 @ReqMethod 的value是允许为空的, 如果为空, 那么在无法精确匹配的情况下会模糊匹配处理方法, 如: {module: "room", cmd: "joinRoom"} 的方法未找到, 则会尝试{module: "room", cmd: ""}, 如果还是未匹配到, 则会尝试 {module: "", cmd: ""}, 如果依旧找不到, 则抛出 MethodNotFoundException. * 模糊匹配的功能的应用 1. 请求的统一处理, 定义{module: "room", cmd: ""}的方法来处理所有 module=room的请求 1. 请求未找到时的处理, 定义{module: "", cmd: ""}的方法来处理所有未被找到的请求, 如打印错误日志等. ## 版本更新记录 ### 2019-04-15 更新版本 1.1.0 * 修改配置group名 dispatcher -> spring.websocket.dispatcher * 新增配置 queueLength (任务队列长度) * 新增配置自动提示功能