Lobby 错误消息
Lobby 服务以“问题详细信息”格式 (RFC 7807) 返回错误,其中包括一些与大多数其他 UGS 服务一致的额外字段。
示例:
{
"title": "Bad Request",
"status": 400,
"code": 16000,
"detail": "request failed validation",
"details": [
{
"errorType": "validation",
"message": "count in body should be less than or equal to 100"
}
{
"errorType": "validation",
"message": "skip in body should be greater than or equal to 0"
}
],
"type": "http://unity3d/lobby/errors/validation-error"
}
错误状态
字段 | 描述 |
---|---|
Code | 用于唯一标识错误类型的 Unity Services 错误代码。 |
Detail | 针对问题的这一特定发生情况的解释,供人阅读理解。 |
Details | 一系列关于特定错误的更多详细信息。请参阅下文的错误详细信息。 |
Status | 响应的 HTTP 状态代码。 |
Title | 供人阅读理解的、简短的问题类型摘要。除非出于本地化目的,同一问题的不同发生情况也应使用同一 Title。 |
Type | 标识问题类型并可能针对问题提供相关文档的 URL。这些 URL 目前无效 |
错误详细信息
字段 | 描述 |
---|---|
ErrorType | 表示错误详细信息的类型。 |
Message | 提供关于错误的更多信息。 |
错误代码
Lobby 服务错误响应的 code
属性可用于以编程方式确定所发生问题的类型。SDK 使用这些信息来自动解决某些问题(例如刷新已过期的令牌、重试因瞬时错误而失败的请求等等),并且这些信息在 SDK 抛出的异常中向开发者显示,以便客户端可以做出适当的响应。
通用错误代码的范围为 0-999。当客户端与 Lobby 服务之间的某些组件存在问题(例如网络连接问题、身份验证失败或速率限制)时,通常会出现这些错误代码。如果这些情况没有得到透明处理,通常表示服务存在更为严重的错误,而且通常会更为罕见。
Lobby 专用错误代码的范围为 16000-16999。这些用于标识 Lobby 服务中的特定错误情形。其中许多情形都很常见,并会在服务正常运行期间发生,游戏开发者应该妥善处理,以提供流畅的用户体验。例如,在执行加入操作时,可能会遇到 LobbyNotFound
(16001
) 错误,这可能只是表示在查询结果返回后,您尝试加入的大厅已被删除,游戏客户端应能够妥善地处理这种情况。
某些通用错误代码和 Lobby 专用错误代码之间可能看起来存在一定重叠(最明显的例子是 NotFound
),但它们不应该以相同的方式处理。通用 NotFound
错误代码有可能表明 SDK 或 API 客户端存在功能问题(例如请求 URL 配置不正确)。您应该查看错误详细信息,以了解有关特定问题的更多信息,从而确定如何解决问题。
Code | 名称 | 描述 |
---|---|---|
0 | Unknown | 当服务器无法确定具体的错误时,便会返回 Unknown。 |
1 | TransportError | 存在 DNS、TLS 或其他传输错误时,便会返回 TransportError。 |
2 | Timeout | 当因为没有在分配的时间内收到响应而导致请求出现超时时,便会返回 Timeout。 |
3 | ServiceUnavailable | 当服务因为发生过载而不可用时或因为服务维护而出现停机时,通常会返回 ServiceUnavailable。 |
4 | ApiMissing | 当相应 API 不存在时,便会返回 ApiMissing。 |
5 | RequestRejected | 当请求在到达 API 之前被拒绝时,便会返回 RequestRejected。有关更多信息,请参阅“Title”和“Details”。 |
50 | TooManyRequests | 当客户端过于频繁地提出请求而被限制请求速率时,便会返回 TooManyRequests。请参阅“Lobby 速率限制”。 |
51 | InvalidToken | 当身份验证令牌无效时,便会返回 InvalidToken。 |
52 | TokenExpired | 当身份验证令牌已过期时,便会返回 TokenExpired。 |
53 | Forbidden | 当用户没有权限执行请求的操作时,便会返回 Forbidden。 |
54 | NotFound | 当未找到请求的资源时,便会返回 NotFound。 |
55 | InvalidRequest | 当请求已被理解,但由于请求验证错误而导致 API 拒绝处理时,便会返回 InvalidRequest。 |
16000 | ValidationError | 如果在验证用户的请求时出现问题,便会返回 ValidationError。错误详细信息中会包含问题的更多信息。 |
16001 | LobbyNotFound | 当未找到请求的大厅时,便会返回 LobbyNotFound。 |
16002 | PlayerNotFound | 当未在大厅中找到请求的玩家时,便会返回 PlayerNotFound。 |
16003 | LobbyConflict | 如果在尝试更新大厅时发生冲突,便会返回 LobbyConflict。这可能表示试图加入大厅的玩家已经是大厅的成员,或者在尝试对大厅进行其他更新时发生了无法解决的问题。 |
16004 | LobbyFull | 当用户尝试加入的大厅已达到玩家人数上限时,便会返回 LobbyFull。 |
16005 | LobbyLocked | 当大厅成员已被锁定而不再允许新玩家加入时,便会返回 LobbyLocked。 |
16006 | NoOpenLobbies | 当 QuickJoin 请求无法找到包含空缺位置的大厅来让用户加入时,便会返回 NoOpenLobbies。 |
16007 | LobbyAlreadyExists | LobbyAlreadyExists 表示大厅因为已经存在而无法创建。 |
16008 | LobbyNotModified | LobbyNotModified 表示大厅资源自上次观察到的版本以来一直没有修改。 |
16009 | IncorrectPassword | IncorrectPassword 表示玩家尝试用来加入大厅的密码与大厅的密码不符。 |
16010 | InvalidJoinCode | InvalidJoinCode 表示加入代码因为某些原因而无效,例如包含无效字符。 |