## 功能測試

經過一些功能測試,總結一些功能:
- 隨意輸入用戶名,系統在后臺會自動綁定一個用戶名——有點類似匿名聊天的功能。
- 可以發送群聊天信息;
- 可以發送私聊信息;
## api接口
### 聊天請求消息結構
~~~
{
"from": "來源ID",
"to": "目標ID",
"cmd":"命令碼(11)int類型",
"createTime": "消息創建時間long類型",
"msgType": "消息類型int類型(0:text、1:image、2:voice、3:vedio、4:music、5:news)",
"chatType":"聊天類型int類型(0:未知,1:公聊,2:私聊)",
"groupId":"群組id僅在chatType為(1)時需要,String類型",
"content": "內容",
"extras" : "擴展字段,JSON對象格式如:{'擴展字段名稱':'擴展字段value'}"
}
~~~
請求測試:
```
{
"from": "來源ID",
"to": "目標ID",
"createTime": "12345687",
"msgType":"0",
"chatType":"1",
"content": "內容"
}
```
消息返回:
```
2021-09-23 15:32:09,843 INFO o.j.s.p.c.DefaultAsyncChatMessageProcessor\[19\]: 默認交由業務處理聊天記錄示例,用戶自己繼承BaseAsyncChatMessageProcessor即可:{"chatType":1,"content":"內容","createTime":12345687,"from":"來源ID","id":"3fc2ac6f04c74284a61255213862ed43","msgType":0,"to":"18d2ed0426ff4827a12108be913b5ad9"}
```
### 開源版本問題
> 問題解讀:開源版本3.0中存在以下問題。
>

#### 解決辦法
通過反射,設置上下文:
```java
} else if (paramType.isAssignableFrom(ImChannelContext.class)) {
paramValues[i] = request.getImChannelContext();
}
```
- 寫在前面
- 如何閱讀源碼
- 第一部分 開源框架
- Netty
- 啟動過程
- SpringSecurityOauth2
- Quartz
- quartz啟動原理
- quartz定時調度任務觸發流程
- 第二部分 優質中間件源碼分析
- Canal
- Canal是如何偽裝為mysql的slave的?
- canal源碼調試
- Sentinel
- 核心概念梳理
- 滑動窗口實現原理
- jvm-sandbox
- jvm-sandbox-repeater
- Windows環境安裝
- 結果比對
- 第三部分 優質行業項目源碼分析
- 第一章 分庫分表實踐
- sharding-jdbc
- 第二章 DDD領域驅動
- 享同科技DDD開源框架
- J-IM
- 功能測試
- 悟空CRM
- 項目搭建
- 默認密碼
- dataX-web
- 項目搭建
- 部署報錯
- dolphinscheduler
- awescnb
- geek
- chrome插件-funds
- 優質開源項目備忘