此方法会建立服务器流式传输连接,让您能够以低延迟接收特定聊天的实时聊天消息。这是使用实时聊天消息的最有效方式,因为它可以将新消息推送到您的客户端,而无需您轮询更新。
首次连接时,API 会发送一系列包含近期聊天记录的消息。发布新消息后,服务器会继续通过打开的连接发送这些消息。
每个服务器响应中的消息均按从旧到新的顺序排列。每个响应还包含一个
首次连接时,API 会发送一系列包含近期聊天记录的消息。发布新消息后,服务器会继续通过打开的连接发送这些消息。
每个服务器响应中的消息均按从旧到新的顺序排列。每个响应还包含一个
nextPageToken
。如果客户端断开连接,您可以使用此令牌恢复直播。为此,请在新的连接请求中提供您收到的最后一个 nextPageToken
作为 pageToken
参数的值。然后,API 将从您上次停止的位置继续发送消息。
演示
如需查看此端点的 Python 演示,请参阅直播聊天流式传输指南。
请求
参数
下表列出了此查询支持的参数。列出的所有参数均为查询参数。
参数 | ||
---|---|---|
必需参数 | ||
liveChatId |
string liveChatId 参数用于指定要返回其消息的对话的 ID。与广播相关联的实时聊天 ID 会在 liveBroadcast 资源的 snippet.liveChatId 属性中返回。 |
|
part |
string part 参数用于指定 API 响应将包含的 liveChatMessage 资源部分。支持的值包括 id 、snippet 和 authorDetails 。 |
|
可选参数 | ||
hl |
string hl 参数指示 API 检索特定YouTube 网站支持的应用语言的本地化币种显示字符串。例如,在英语中,币种会显示为 $1.50 ,但在法语中,会显示为 1,50$ 。参数值必须是 i18nLanguages.list 方法返回的列表中包含的语言代码。 |
|
maxResults |
unsigned integer maxResults 参数用于指定结果集中应返回的消息数量上限。可接受的值为 200 到 2000 (含)。默认值为 500 。 |
|
pageToken |
string pageToken 参数用于标识应返回的结果集中的特定网页。在 API 响应中,nextPageToken 属性用于标识可检索的其他网页。 |
|
profileImageSize |
unsigned integer profileImageSize 参数用于指定结果集中应返回的用户个人资料照片的大小。图片为方形。默认值为 88 ,表示图片尺寸为 88x88 像素。可接受的值范围为 16 到 720 (含)。 |
请求正文
调用此方法时,请勿提供请求正文。
响应
如果成功,此方法将返回采用以下结构的响应正文:
{ "kind": "youtube#liveChatMessageListResponse", "etag": etag, "nextPageToken": string, "pollingIntervalMillis": unsigned integer, "offlineAt": datetime, "pageInfo": { "totalResults": integer, "resultsPerPage": integer }, "items": [ liveChatMessage Resource ], "activePollItem": liveChatMessage Resource }
属性
下表定义了此资源中显示的属性:
属性 | |
---|---|
kind |
string 用于标识 API 资源的类型。该值为 youtube#liveChatMessageListResponse 。 |
etag |
etag 相应资源的 ETag。 |
nextPageToken |
string 可用作 pageToken 参数的值的令牌,用于检索结果集中的下一页。 |
offlineAt |
datetime 基础直播变为离线的日期和时间。只有当直播已处于离线状态时,此属性才会存在。该值采用 ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ ) 格式指定。 |
pageInfo |
object pageInfo 对象封装了结果集的分页信息。 |
pageInfo.totalResults |
integer 结果集中的结果总数。 |
pageInfo.resultsPerPage |
integer API 响应中包含的结果数。 |
items[] |
list 消息列表。列表中的每项内容都是一个 liveChatMessage 资源。 |
activePollItem |
object 消息中的投票数据。每次投票都是一个 liveChatMessage 资源,类型为 pollEvent ,表示正在进行的投票。每个对话只能包含一个投票。 |
错误
下表列出了 API 在响应对此方法的调用时可能会返回的错误消息。如需了解详情,请参阅错误消息文档。
使用 gRPC 进行连接时:
gRPC 错误代码 | 错误详情 | 说明 |
---|---|---|
PERMISSION_DENIED (7) |
The caller does not have permission |
您没有检索指定实时聊天消息所需的权限。 |
INVALID_ARGUMENT (3) |
Request contains an invalid argument |
未能解析所提供的参数。确保 liveChatId 和其他参数的格式正确无误。 |
FAILED_PRECONDITION (9) * |
Precondition check failed |
LIVE_CHAT_DISABLED。指定的实时聊天已停用。 |
FAILED_PRECONDITION (9) * |
Precondition check failed |
LIVE_CHAT_ENDED。您无法检索已结束的实时聊天的消息。 |
NOT_FOUND (5) |
Requested entity was not found |
找不到您尝试检索的实时聊天内容。检查请求的 liveChatId 参数的值,确保其正确无误。 |
RESOURCE_EXHAUSTED (8) |
Resource has been exhausted (e.g. check quota) |
相应请求是在上一个请求发送后过快发送的。当发送的用于检索消息的 API 请求的频率高于 YouTube 的刷新频率时,就会出现此错误,这会不必要地浪费带宽。 |
* 由于 gRPC 限制,无法根据错误代码区分 LIVE_CHAT_DISABLED
情况和 LIVE_CHAT_ENDED
情况。YouTube 正在积极寻找解决方案来解决此问题。
使用 Web 流量进行连接时:
错误类型 | 错误详情 | 说明 |
---|---|---|
HttpStatus.FORBIDDEN (403) |
forbidden |
您没有检索指定实时聊天消息所需的权限。 |
HttpStatus.BAD_REQUEST (400) |
Reason for invalid request, e.g. pageTokenInvalid |
未能解析所提供的参数。确保 liveChatId 和其他参数的格式正确无误。 |
HttpStatus.FORBIDDEN (403) |
liveChatDisabled |
LIVE_CHAT_DISABLED。指定的实时聊天已停用。 |
HttpStatus.FORBIDDEN (403) |
liveChatEnded |
LIVE_CHAT_ENDED。您无法检索已结束的实时聊天的消息。 |
HttpStatus.NOT_FOUND (404) |
liveChatNotFound |
找不到您尝试检索的实时聊天内容。检查请求的 liveChatId 参数的值,确保其正确无误。 |
HttpStatus.FORBIDDEN (403) |
rateLimitExceeded |
相应请求是在上一个请求发送后过快发送的。当发送的用于检索消息的 API 请求的频率高于 YouTube 的刷新频率时,就会出现此错误,这会不必要地浪费带宽。 |