同一个房间连接数超过上限时报致命错误

This commit is contained in:
John Smith 2024-04-13 18:05:06 +08:00
parent 5f744c8214
commit 68fd680ec4
6 changed files with 21 additions and 8 deletions

View File

@ -44,6 +44,7 @@ class ContentType(enum.IntEnum):
class FatalErrorType(enum.IntEnum): class FatalErrorType(enum.IntEnum):
AUTH_CODE_ERROR = 1 AUTH_CODE_ERROR = 1
TOO_MANY_RETRIES = 2 TOO_MANY_RETRIES = 2
TOO_MANY_CONNECTIONS = 3
def make_message_body(cmd, data): def make_message_body(cmd, data):

View File

@ -45,8 +45,11 @@ export default class ChatClientDirectOpenLive extends ChatClientOfficialBase {
if (res.code === 7007) { if (res.code === 7007) {
// 身份码错误 // 身份码错误
throw new chatModels.ChatClientFatalError(chatModels.FATAL_ERROR_TYPE_AUTH_CODE_ERROR, msg) throw new chatModels.ChatClientFatalError(chatModels.FATAL_ERROR_TYPE_AUTH_CODE_ERROR, msg)
} else if (res.code === 7010) {
// 同一个房间连接数超过上限
throw new chatModels.ChatClientFatalError(chatModels.FATAL_ERROR_TYPE_TOO_MANY_CONNECTIONS, msg)
} }
throw Error(msg) throw new Error(msg)
} }
} catch (e) { } catch (e) {
console.error('startGame failed:', e) console.error('startGame failed:', e)
@ -87,7 +90,7 @@ export default class ChatClientDirectOpenLive extends ChatClientOfficialBase {
})).data })).data
// 项目已经关闭了也算成功 // 项目已经关闭了也算成功
if ([0, 7000, 7003].indexOf(res.code) === -1) { if ([0, 7000, 7003].indexOf(res.code) === -1) {
throw Error(`code=${res.code}, message=${res.message}, request_id=${res.request_id}`) throw new Error(`code=${res.code}, message=${res.message}, request_id=${res.request_id}`)
} }
} catch (e) { } catch (e) {
console.error('endGame failed:', e) console.error('endGame failed:', e)
@ -125,7 +128,7 @@ export default class ChatClientDirectOpenLive extends ChatClientOfficialBase {
this.needInitRoom = true this.needInitRoom = true
this.discardWebsocket() this.discardWebsocket()
} }
throw Error(`code=${res.code}, message=${res.message}, request_id=${res.request_id}`) throw new Error(`code=${res.code}, message=${res.message}, request_id=${res.request_id}`)
} }
} catch (e) { } catch (e) {
console.error('sendGameHeartbeat failed:', e) console.error('sendGameHeartbeat failed:', e)

View File

@ -69,7 +69,7 @@ export default class ChatClientOfficialBase {
} }
async initRoom() { async initRoom() {
throw Error('Not implemented') throw new Error('Not implemented')
} }
makePacket(data, operation) { makePacket(data, operation) {
@ -95,7 +95,7 @@ export default class ChatClientOfficialBase {
} }
sendAuth() { sendAuth() {
throw Error('Not implemented') throw new Error('Not implemented')
} }
addDebugMsg(content) { addDebugMsg(content) {
@ -139,13 +139,13 @@ export default class ChatClientOfficialBase {
if (!res) { if (!res) {
window.setTimeout(() => this.onWsClose(), 0) window.setTimeout(() => this.onWsClose(), 0)
throw Error('initRoom failed') throw new Error('initRoom failed')
} }
this.needInitRoom = false this.needInitRoom = false
} }
getWsUrl() { getWsUrl() {
throw Error('Not implemented') throw new Error('Not implemented')
} }
onWsOpen() { onWsOpen() {

View File

@ -114,6 +114,7 @@ export class UpdateTranslationMsg {
export const FATAL_ERROR_TYPE_AUTH_CODE_ERROR = 1 export const FATAL_ERROR_TYPE_AUTH_CODE_ERROR = 1
export const FATAL_ERROR_TYPE_TOO_MANY_RETRIES = 2 export const FATAL_ERROR_TYPE_TOO_MANY_RETRIES = 2
export const FATAL_ERROR_TYPE_TOO_MANY_CONNECTIONS = 3
export class ChatClientFatalError extends Error { export class ChatClientFatalError extends Error {
constructor(type, message) { constructor(type, message) {

View File

@ -349,7 +349,7 @@ export default {
onFatalError(error) { onFatalError(error) {
this.$message.error({ this.$message.error({
message: error.toString(), message: error.toString(),
duration: 10 * 1000 duration: 30 * 1000
}) })
this.onAddText(new chatModels.AddTextMsg({ this.onAddText(new chatModels.AddTextMsg({
authorName: 'blivechat', authorName: 'blivechat',

View File

@ -278,6 +278,14 @@ class OpenLiveClient(blivedm.OpenLiveClient):
'type': api.chat.FatalErrorType.AUTH_CODE_ERROR, 'type': api.chat.FatalErrorType.AUTH_CODE_ERROR,
'msg': str(e) 'msg': str(e)
}) })
elif e.code == 7010:
# 同一个房间连接数超过上限
room = client_room_manager.get_room(self.room_key)
if room is not None:
room.send_cmd_data(api.chat.Command.FATAL_ERROR, {
'type': api.chat.FatalErrorType.TOO_MANY_CONNECTIONS,
'msg': str(e)
})
return False return False
return self._parse_start_game(data['data']) return self._parse_start_game(data['data'])