LiveChatMessages: streamList

此方法会建立服务器流式传输连接,让您能够以低延迟接收特定聊天的实时聊天消息。这是使用实时聊天消息的最有效方式,因为它可以将新消息推送到您的客户端,而无需您轮询更新。

首次连接时,API 会发送一系列包含近期聊天记录的消息。发布新消息后,服务器会继续通过打开的连接发送这些消息。

每个服务器响应中的消息均按从旧到新的顺序排列。每个响应还包含一个 nextPageToken。如果客户端断开连接,您可以使用此令牌恢复直播。为此,请在新的连接请求中提供您收到的最后一个 nextPageToken 作为 pageToken 参数的值。然后,API 将从您上次停止的位置继续发送消息。

演示

如需查看此端点的 Python 演示,请参阅直播聊天流式传输指南。

请求

参数

下表列出了此查询支持的参数。列出的所有参数均为查询参数。

参数
必需参数
liveChatId string
liveChatId 参数用于指定要返回其消息的对话的 ID。与广播相关联的实时聊天 ID 会在 liveBroadcast 资源的 snippet.liveChatId 属性中返回。
part string
part 参数用于指定 API 响应将包含的 liveChatMessage 资源部分。支持的值包括 idsnippetauthorDetails
可选参数
hl string
hl 参数指示 API 检索特定YouTube 网站支持的应用语言的本地化币种显示字符串。例如,在英语中,币种会显示为 $1.50,但在法语中,会显示为 1,50$

参数值必须是 i18nLanguages.list 方法返回的列表中包含的语言代码。
maxResults unsigned integer
maxResults 参数用于指定结果集中应返回的消息数量上限。可接受的值为 2002000(含)。默认值为 500
pageToken string
pageToken 参数用于标识应返回的结果集中的特定网页。在 API 响应中,nextPageToken 属性用于标识可检索的其他网页。
profileImageSize unsigned integer
profileImageSize 参数用于指定结果集中应返回的用户个人资料照片的大小。图片为方形。默认值为 88,表示图片尺寸为 88x88 像素。可接受的值范围为 16720(含)。

请求正文

调用此方法时,请勿提供请求正文。

响应

如果成功,此方法将返回采用以下结构的响应正文:

{
  "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 的刷新频率时,就会出现此错误,这会不必要地浪费带宽。