WS地址:**ws://im.xiangbaicheng.com/chat**
请求方式:**GET**
请求参数:
| 参数 | 类型 | 含义 | 取值 |
| --- | --- | --- | --- |
| token | String | 授权码 | 通过服务端API获取,参照[获取授权码](https://console.xiangbaicheng.com/doc/token.html "获取授权码") |
#### 数据格式
| 参数 | 类型 | 含义 | 取值 |
| --- | --- | --- | --- |
| type | String | 消息类型,single-单聊,group-群聊,join-加群,leave-退 | 群聊时为group,加群时为join,退群时为leave |
| source | String/Number | 发送者ID或其他唯一字段 | 取值需要具有唯一性 |
| target | String/Number | 群聊ID或其他唯一字段 | 取值需要具有唯一性 |
| msgType | String | 消息类型,默认text | 支持自定义消息类型,如voice、image、map等 |
| extra | Mix | 额外数据,支持任意可解析的格式 | 示例见[额外数据格式示例](https://console.xiangbaicheng.com/doc/group.html#backage "额外数据格式示例") |
#### 额外数据格式示例
| 参数 | 类型 | 含义 |
| --- | --- | --- |
| msgId | String/Number | 消息ID |
| timestamp | Integer | 发送消息时的时间戳 |
#### 发送消息
```
socket.onopen = function (){
// 消息数据包
let msgData = {
msgId: 1,
timestamp: '1611065986'
}
// 发送的消息
let data = {
type: 'group',
source: 1,
target: 2,
msg: msgData
}
// 发送消息
socket.onopen = function (){
socket.send(data);
}
};
```
#### 接收消息
```
socket.onmessage = function (res){
// 基于发送消息数据格式进行数据解析
let data = JSON.parse(res.data);
// 其他逻辑处理
};
```