一、功能描述
注意:说明:
二、流式消息 payload 数据结构
| 属性 | 含义 | 说明 |
| markdown | 流式消息文本内容 | 随着分片到达逐步累加的文本内容,只读。 |
| isStreamEnded | 流式消息是否结束 | 为 true 时表示服务端已完成所有内容推送。 |
注意:说明:
三、发送流式消息
流式消息只能通过 REST API 发送,具体参考 发送 C2C 流式消息 和 发送群流式消息。
四、接收流式消息
当收到一条新的流式消息时,SDK 会通过 MESSAGE_RECEIVED 事件通知。此时消息中的 payload 内容可能还不完整(isStreamEnded 为 false)。
示例代码如下:
let onMessageReceived = function(event) { event.data.forEach((message) => { if (message.type === TencentCloudChat.TYPES.MSG_STREAM) { // 在 UI 上展示消息,后续内容会通过 MESSAGE_MODIFIED 事件持续更新 const { markdown, // 流式消息内容 isStreamEnded, // 流式消息是否结束 } = message.payload; } })};chat.on(TencentCloudChat.EVENT.MESSAGE_RECEIVED, onMessageReceived);
五、监听流式消息内容更新
SDK 收到新的分片数据后,会自动将内容累加到 payload 中,并通过 MESSAGE_MODIFIED 事件通知上层。只需在该回调中读取最新的 markdown 内容并刷新 UI 即可。
注意:说明:
示例代码如下:
let onMessageModified = function(event) { event.data.forEach((message) => { if (message.type === TencentCloudChat.TYPES.MSG_STREAM) { const { markdown, // 流式消息内容 isStreamEnded, // 流式消息是否结束 } = message.payload; // 通过 message.ID 更新消息内容 if (isStreamEnded) { // 流式消息已结束,可以做最终处理 } } })};chat.on(TencentCloudChat.EVENT.MESSAGE_MODIFIED, onMessageModified);
六、历史消息中的流式消息
当拉取历史消息时:
·若消息中包含未完成的流式消息,SDK 会自动恢复拉流操作,继续通过 MESSAGE_MODIFIED 事件更新内容,客户端无需额外处理。
·若消息中的流式消息已全部拉取完毕,拉取历史消息后可直接展示完整内容,且不会再次触发 MESSAGE_MODIFIED 事件。