再造企业微信机器人
Prelude
为什么叫“再造”呢?有再造,那么就一定有第一个:GitHub: Bokjan/DiaoBot。
DiaoBot是主体完工于2019年9月的企业微信机器人框架,完整地实现了当时企业微信机器人所有能力的封装。但其存在一些不论是当时还是现在都会令人感觉比较奇怪的一些缺陷:
- 回调server基于mongoose的HTTP能力,整合较奇怪且其基于
select()
的复用,性能低(?真的需要性能吗) - 固定工作线程数,但工作线程中的封装IO操作却是同步阻塞的
- 所有定时任务均新开处理线程,且定时任务分派线程原理粗暴(每一分钟唤醒,遍历所有注册项并启动对应项)
- 基于信号的优雅退出过程慢(定时任务线程睡眠中,须唤醒才会退出)
- 有着一个比较奇怪的二进制模型:主可执行程序(
diaobotd
)、公用SDK动态链接库(libdiaobot.so
)以及不定数量的用户业务逻辑动态链接库(由diaobotd
读取配置文件动态挂载) - 回调处理的抽象设计做得不太好
- ……
我现在惊讶地发现有一个问题其实是有解的:你可以找到一台既能够接收内网回调、又能够请求公网API的机器。如果说当你想干点什么的时候,却发现这个必要的工具其实不好用,是不是就会想去先把工具改造一下了?所以,到了差不多两年之后的今天,GitHub: Bokjan/wcbot横空出世。