# Client模块
[![](https://img.shields.io/badge/simple--robot--module-debugger-green)](https://github.com/ForteScarlet/simple-robot-core) [![](https://img.shields.io/maven-central/v/love.forte.simple-robot-module/simple-robot-module-debugger-client)](https://search.maven.org/artifact/love.forte.simple-robot-module/simple-robot-module-debugger-client)
依赖于Common模块,在程序启动后启动一个socket客户端来支持远程debug。其对应的服务端为前章节介绍到的`server`模块。
>[info] client 模块一般用于通过配合server模块来进行远程debug。
<br>
## **简介**
client会在启动的时候去连接配置中指定地址的server。
当client连接后,便可以通过client向server提交事件并触发server端的监听事件,以实现远程通过client对server进行调试。
当server端的配置中的`simbot.module.debugger.listen=true`的时候,server中所触发的其他非debug监听事件的时候,会将此事件提交给client,实现通过client监听server端的事件。
但是需要注意的是,不论事件提交为`client -> server`还是`server -> client`,他们所接收到的`MsgGet`实例永远是`debugger-common`模块中提供的debugger特供的实例,不属于任何组件。
一个server可连接多个client。
<br>
## **使用**
### **① 构建项目**
以maven为例:
(版本参考maven仓库或者此文档上方的版本号图标)
```xml
<!-- https://search.maven.org/artifact/love.forte.simple-robot-module/simple-robot-module-debugger-client-->
<dependency>
<groupId>love.forte.simple-robot-module</groupId>
<artifactId>simple-robot-module-debugger-client</artifactId>
<version>${project.version}</version>
</dependency>
```
<br>
### **② 配置文件**
```properties
# suppress inspection "UnusedProperty" for whole file
# debugger client
# debugger client连接的server ip, 默认127.0.0.1
simbot.module.debugger.host=forte.love
# debugger client连接的server 端口,默认9998
simbot.module.debugger.port=9998
```
<br>
### **③ 使用**
一般使用client的时候是配合`debugger-common`的`DebugApplication`启动器进行离线测试。
```java
// 如果不用接口启动,则记得标注注解。默认的配置文件的文件名为:simple-robot-conf.properties
@SimpleRobotApplication
public class DebugClientRunApplication {
public static void main(String[] args) throws InterruptedException {
DebugContext context = new DebugApplication().run(DebugClientRunApplication.class, args);
// 看看 debugger 注册了什么bot info
BotManager botManager = context.getBotManager();
for (BotInfo bot : botManager.bots()) {
System.out.println(bot.getSender().GETTER.getLoginQQInfo());
}
// 获取client中的控制器,功能与server中的控制台一致,用于向server端提交事件。
DebugController controller = context.getController();
// 如果连接存活,则每2秒发送一次随机的私信消息。
while(controller.isActive()){
controller.send(MsgGetTypes.privateMsg, msg -> {
// 将msg中的thisCode设置为统一的账号:114514
// 实际情况下应该设置为与你的远程端一致的账号信息
msg.setDgThisCode("114514");
// msg.setThisCode("114514"); // 上下两个方法一样效果
});
System.out.println("send private msg");
TimeUnit.SECONDS.toMillis(2);
}
// 连接断开则会跳出循环
System.out.println("out - not active");
}
}
```
>[info] 当server端被关闭的时候,client则会断开。
- 前言
- 简单介绍
- 我该如何阅读文档
- 视频教程
- 安装与使用
- 开源协议
- 免责&捐助
- 注意事项
- 版本命名规则简介
- 主要功能版本历史
- 功能指引
- 通用API与功能
- 国际化语言
- 异常
- 消息监听
- @Listen
- @OnListen模板
- @Filter
- 消息参数截取
- @Spare
- @Constr
- @Ignore
- @ListenBreak
- @ListenBreakPlugin
- @ListenBody
- 监听响应
- 成功判定与返回值
- 监听上下文
- 动态参数
- 监听消息API
- 异步监听 @Async
- 限流监听 @Limit
- 自定义Http送信器
- 枚举与类型
- 送信器
- SENDER
- SETTER
- GETTER
- 返回值
- 其他位置
- 日志与日志拦截
- 异常处理
- 依赖注入
- 自定义依赖获取
- 批量依赖载入
- 注意事项
- 常量
- 定时任务
- 自定义过滤
- 拦截器
- 拦截器总定义
- 上下文对象总定义
- 监听消息拦截
- 送信器拦截
- 监听函数拦截
- CAT码
- CQ码
- CQCode
- CQ码工具类
- CQ扩展工具类
- AppendList拼接链
- 高级内容
- 阻断机制
- 截断机制
- 自定义枚举类型
- 枚举工厂
- byName注解
- 自定义注解
- 配置
- 文件配置
- 注解配置
- 参数配置
- 多配置
- 多账号
- 自定义账号管理器
- 小心!
- 核心版本与组件如何升级核心
- 核心版本迭代指南
- 核心
- 更新日志
- jar包与依赖
- 监听消息类结构图
- 快速启动
- 模组与扩展
- 模组开发
- 现有模组
- 通用模组-延时任务
- 通用模组-CQ码工具
- 转义器
- CQ码操作工具类
- CQ码模板-CodeTemplate
- CQ码载体-KQCode
- CQ码构建器
- MQ码工具类
- 通用模组-redis-bot管理器
- 通用模组-Debugger
- Debugger-common模块
- Debugger-server模块
- Debugger-client模块
- 通用模组-钉钉机器人
- 组件-Mirai(JVM)
- 快速开始(1.13+)
- springboot-starter
- 注意事项
- 配置
- 额外的内容
- 快速回复
- 额外监听
- CQ码解析
- 组件-酷Q(QQ)-CQ HTTP API(基本失效)
- 快速开始(推荐)
- 快速开始(1.7.x以下,不推荐)
- 快速开始(Springboot启动器)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 额外的内容
- 自定义额外监听
- CQ送信器
- 元事件
- 监听消息类结构图
- 组件-酷Q(QQ)-JCQ(失效)
- 快速开始
- 更新日志
- 额外的内容
- JCQ日志
- 配置
- 注意事项
- 监听消息类结构图
- 组件-酷Q(QQ)-HTTP TO CQ(失效)
- 快速开始(核心1.7.x及以下)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 监听消息类结构图
- 组件-酷Q(QQ)-LEMOC (失效)
- 快速开始(核心1.7.x及以下)
- 配置
- 注意事项
- 更新日志
- 监听消息类结构图
- Springboot快速启动器
- 常见问题汇总
- BUG反馈
- 更新计划总览