1 Star 2 Fork 1

yjy / websocket-action-dispatcher

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
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的请求
    2. 请求未找到时的处理, 定义{module: "", cmd: ""}的方法来处理所有未被找到的请求, 如打印错误日志等.

版本更新记录

2019-04-15 更新版本 1.1.0

  • 修改配置group名 dispatcher -> spring.websocket.dispatcher
  • 新增配置 queueLength (任务队列长度)
  • 新增配置自动提示功能

空文件

简介

websocket请求分发组件 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/yangjiayi/websocket-action-dispatcher.git
git@gitee.com:yangjiayi/websocket-action-dispatcher.git
yangjiayi
websocket-action-dispatcher
websocket-action-dispatcher
master

搜索帮助