此方法会建立服务器流式传输连接,让您能够以低延迟接收特定聊天的实时聊天消息。这是使用实时聊天消息的最有效方式,因为它可以将新消息推送到您的客户端,而无需您轮询更新。
首次连接时,API 会发送一系列包含近期聊天记录的消息。发布新消息后,服务器会继续通过打开的连接发送这些消息。
每个服务器响应中的消息均按从旧到新的顺序排列。每个响应还包含一个
首次连接时,API 会发送一系列包含近期聊天记录的消息。发布新消息后,服务器会继续通过打开的连接发送这些消息。
每个服务器响应中的消息均按从旧到新的顺序排列。每个响应还包含一个
nextPageToken。如果客户端断开连接,您可以使用此令牌恢复直播。为此,请在新的连接请求中提供您收到的最后一个 nextPageToken 作为 pageToken 参数的值。然后,API 将从您上次停止的位置继续发送消息。
  演示
如需查看此端点的 Python 演示,请参阅直播聊天流式传输指南。
请求
参数
下表列出了此查询支持的参数。列出的所有参数均为查询参数。
| 参数 | ||
|---|---|---|
| 必需参数 | ||
| liveChatId | stringliveChatId参数用于指定要返回其消息的对话的 ID。与广播相关联的实时聊天 ID 会在liveBroadcast资源的snippet.liveChatId属性中返回。 | |
| part | stringpart参数用于指定 API 响应将包含的liveChatMessage资源部分。支持的值包括id、snippet和authorDetails。 | |
| 可选参数 | ||
| hl | stringhl参数指示 API 检索特定YouTube 网站支持的应用语言的本地化币种显示字符串。例如,在英语中,币种会显示为$1.50,但在法语中,会显示为1,50$。参数值必须是 i18nLanguages.list方法返回的列表中包含的语言代码。 | |
| maxResults | unsigned integermaxResults参数用于指定结果集中应返回的消息数量上限。可接受的值为200到2000(含)。默认值为500。 | |
| pageToken | stringpageToken参数用于标识应返回的结果集中的特定网页。在 API 响应中,nextPageToken属性用于标识可检索的其他网页。 | |
| profileImageSize | unsigned integerprofileImageSize参数用于指定结果集中应返回的用户个人资料照片的大小。图片为方形。默认值为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 | objectpageInfo对象封装了结果集的分页信息。 | 
| pageInfo.totalResults | integer结果集中的结果总数。 | 
| pageInfo.resultsPerPage | integerAPI 响应中包含的结果数。 | 
| 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 的刷新频率时,就会出现此错误,这会不必要地浪费带宽。 |