Обработка задержки при синхронизации таймеров на стороне клиента с использованием Juggernaut - PullRequest
1 голос
/ 01 августа 2011

Мне нужно реализовать черновик приложения для сайта о фэнтези-спорте.Каждый пользователь будет иметь 1m30, чтобы выбрать игрока в своей команде, и если это время истекло, он будет выбран автоматически.Наша запланированная реализация будет использовать Juggernaut, чтобы выдвигать изменения хода каждому пользователю, участвующему в проекте.Но я все еще не уверен, как справиться с задержкой.

Основная проблема здесь заключается в том, что если у пользователя задержка выше, чем у остальных, он получит изменения хода чуть позже, и его таймер не будет синхронизирован.Скажем, кто-то получает смену хода после выбора игрока сам, в то время как на его стороне он думает, что ему еще осталось 2 секунды, как мы можем справиться с этим делом?Что лучше, чтобы попытаться измерить задержку каждого пользователя и настроить таймер на стороне клиента, чтобы минимизировать эту проблему?Если да, то как мы можем это реализовать?

1 Ответ

1 голос
/ 02 августа 2011

Это сложная проблема, но есть несколько хороших решений.Посмотрите, что делает time.gov и как это делает;по сути, насколько я понимаю, они используют Java для выполнения нескольких повторных запросов к серверу, чтобы попытаться понять задержку, связанную с обменом данными, затем они генерируют меру задержки, которую они используют, чтобы исказить возвращаемые данные времени.Вы можете использовать тот же процесс для вашего приложения, с еще большей точностью;отслеживание того, что такое задержка и как она изменяется во времени, позволяет вам сделать некоторые статистические выводы о том, насколько надежны ваши значения задержек и т. д. Это может быть немного сложным, но оно может определенно сгладить вашу производительность.Насколько я понимаю, это то, что большинство MMO также делают, чтобы справиться с задержкой.

...