Skip to content

流式消息

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"
字段类型是否必填说明
recvIdstring接收消息对象ID
用户: userId
群: groupId
recvTypestring接收对象类型
用户: user
群: group
contentTypestring消息类型,取值如下
text\markdown
字段类型说明
codeint响应代码
msgstring响应信息,包括异常信息
dataObject返回数据
{
"code": 1,
"data": {
"messageInfo": {
"msgId": "xxxxxxxxxxxxxxxxx",
"recvId": "7058262",
"recvType": "user"
}
},
"msg": "success"
}
// 创建请求
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))