vimp-engine 0.37.0 → 0.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -172,8 +172,22 @@ export default class GuestSession {
|
|
|
172
172
|
let reconnectAttempt = 0;
|
|
173
173
|
|
|
174
174
|
publisher.on('close', () => {
|
|
175
|
-
const {
|
|
176
|
-
|
|
175
|
+
const {
|
|
176
|
+
baseDelay,
|
|
177
|
+
maxDelay,
|
|
178
|
+
hostFirstDelay = 0,
|
|
179
|
+
} = this._config.reconnect;
|
|
180
|
+
// хост: мастер держит комнату hostDisconnectGraceMs — первая попытка
|
|
181
|
+
// сразу, дальше тот же бэкофф, сдвинутый на одну ступень
|
|
182
|
+
const isHost = Boolean(this._hostRole.controller);
|
|
183
|
+
const delay =
|
|
184
|
+
isHost && reconnectAttempt === 0
|
|
185
|
+
? hostFirstDelay
|
|
186
|
+
: Math.min(
|
|
187
|
+
maxDelay,
|
|
188
|
+
baseDelay *
|
|
189
|
+
2 ** (isHost ? reconnectAttempt - 1 : reconnectAttempt),
|
|
190
|
+
);
|
|
177
191
|
|
|
178
192
|
reconnectAttempt += 1;
|
|
179
193
|
this._timers.setTimeout(() => this._signaling.connect(), delay);
|
package/src/config/lobby.js
CHANGED
|
@@ -172,8 +172,12 @@ export default {
|
|
|
172
172
|
defaultLeaderboardPeriod: 'all',
|
|
173
173
|
|
|
174
174
|
// переподключение сигнального WS хоста (комната без него выпадает из
|
|
175
|
-
// выдачи мастера): экспоненциальный бэкофф от baseDelay до maxDelay (мс)
|
|
175
|
+
// выдачи мастера): экспоненциальный бэкофф от baseDelay до maxDelay (мс).
|
|
176
|
+
// Вкладка-хост переподключается первой попыткой сразу (hostFirstDelay):
|
|
177
|
+
// мастер держит её комнату master:room:hostDisconnectGraceMs, и вторая
|
|
178
|
+
// попытка (через baseDelay) тоже должна уложиться в выдержку
|
|
176
179
|
reconnect: {
|
|
180
|
+
hostFirstDelay: 0,
|
|
177
181
|
baseDelay: 1000,
|
|
178
182
|
maxDelay: 30000,
|
|
179
183
|
},
|
package/src/config/master.js
CHANGED
|
@@ -87,9 +87,13 @@ export default {
|
|
|
87
87
|
room: {
|
|
88
88
|
// отсоединённый участник ещё считается в комнате (реконнект сигналинга)
|
|
89
89
|
memberGraceMs: 15000,
|
|
90
|
-
// обрыв WS хоста запускает миграцию
|
|
91
|
-
//
|
|
92
|
-
//
|
|
90
|
+
// обрыв WS хоста запускает миграцию не сразу, а через столько, если хост
|
|
91
|
+
// не вернулся reclaim_host'ом и ни один гость не сообщил host_unreachable
|
|
92
|
+
// (host_leaving мигрирует сразу); reclaim_host после начала миграции, до
|
|
93
|
+
// регистрации преемника, её отменяет (этап 7.0)
|
|
94
|
+
hostDisconnectGraceMs: 2000,
|
|
95
|
+
// повышать некого — комната ждёт reclaim_host столько, потом уборка
|
|
96
|
+
// мигрирует или закрывает её
|
|
93
97
|
hostReclaimGraceMs: 10000,
|
|
94
98
|
// потолок строки карточки комнаты в лобби (gameConfig.lobbyInfo игры)
|
|
95
99
|
maxInfoLength: 48,
|