流式消息
https://chat-go.jwzhd.com/open-apis/v1/bot/send-stream?token=xxxxxxxxxx
流式传输消息采用分块传输编码(Chunked transfer encoding)技术。请求头中需要设置`Transfer-Encoding: chunked`,表示使用分块传输编码。POST
curl --location 'https://chat-go.jwzhd.com/open-apis/v1/bot/send-stream?token=xxxx&recvId=7058262&recvType=user&contentType=text' \--header 'Transfer-Encoding: chunked' \--header 'Content-Type: text/plain' \--data-binary '@/Users/feng/Downloads/1.txt'Transfer-Encoding: "chunked"请求URL参数
Section titled “请求URL参数”| 字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| recvId | string | 是 | 接收消息对象ID 用户: userId 群: groupId |
| recvType | string | 是 | 接收对象类型 用户: user 群: group |
| contentType | string | 是 | 消息类型,取值如下 text\markdown |
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | 响应代码 |
| msg | string | 响应信息,包括异常信息 |
| data | Object | 返回数据 |
响应内容示例
Section titled “响应内容示例”{ "code": 1, "data": { "messageInfo": { "msgId": "xxxxxxxxxxxxxxxxx", "recvId": "7058262", "recvType": "user" } }, "msg": "success"}Golang代码示例
Section titled “Golang代码示例” // 创建请求 req, err := http.NewRequest("POST", "https://chat-go.jwzhd.com/open-apis/v1/bot/send-stream?token=xxxx&recvId=7058262&recvType=user&contentType=text", nil) if err != nil { fmt.Println("Error creating request:", err) return }
// 创建一个管道,用于流式传输数据 pr, pw := io.Pipe()
// 启动一个 goroutine 来写入数据 go func() { defer pw.Close() for i := 0; i < 15; i++ { data := fmt.Sprintf("Message %d", i) pw.Write([]byte(data)) time.Sleep(1 * time.Second) // 模拟延迟 } }()
// 将管道的读取器作为请求的主体 req.Body = pr
// 发送请求 resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close()
// 读取响应 responseBody, err := io.ReadAll(resp.Body) if err != nil { fmt.Println("Error reading response:", err) return } fmt.Println("Response:", string(responseBody))