У меня есть простая ajax-игра между двумя пользователями с Java-бэкэндом (tomcat, spring). Мне нужен какой-то хороший способ уведомления одного пользователя о том, что его оппонент сделал ход. Теперь все общение происходит через базу данных, и ожидание, пока противник закончит свой ход, выглядит следующим образом:
while(!timeout && !opponentIsDone) {
//...get the game record from db and check if opponent made turn
Thread.sleep(100);
}
Можно ли как-нибудь избавиться от этого цикла с помощью sleep () и получить мгновенное уведомление без задержки (но с таймаутом)? Я, вероятно, могу создать глобальную статическую переменную и обмениваться данными через нее, но мне все равно понадобится подобный цикл, только возможно, тайм-аут будет меньше.
Я не могу просто вызвать какой-то метод после того, как поворот сделан, потому что все это нужно, чтобы перейти в браузер через ajax, и я не могу отправить туда данные, только вытащить. Поэтому мне нужно иметь процесс, который ждет противника.
Я ищу легкое и простое решение.
Спасибо.