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