2011-12-21 2 views
1

В настоящее время я создаю приложение с помощью Play !, и я хотел обновить свое представление в соответствии со значениями из моей базы данных.Play Framework Asynchronous css просмотреть обновление с помощью Ajax

Я создал работу по мониторингу, цель которой - отправить HTTP-запрос на отдельные сайты каждые 30 минут и записать значение в базу данных для каждого сайта: если сайт ответил, он записывает 1, в противном случае он записывает 0.

Кроме того, я хотел посмотреть на моем основном шаблоне приложения небольшие цветные точки для каждого сайта: если сайт отвечает, он будет зеленым, а если нет, он будет красным. Это обновление цвета должно выполняться асинхронно. Эти точки будут отображаться для каждой страницы моего приложения.

Итак, я могу использовать свою работу, которая уже является асинхронной, изменить цвета точек, когда это необходимо, но я не знаю, можно ли обновлять представления из задания. Или я могу создать сценарий ajax для обновления цветов с помощью css, но я не знаю, как его запускать, когда меняются значения значений флагов базы данных.

Благодарим за помощь!

ответ

1

Вы не можете обновлять представления из задания. Но вы можете обновить его с помощью WebSocket: http://www.playframework.org/documentation/1.2.4/asynchronous#UsingWebSockets Но он пока не поддерживается во всех браузерах.

Я думаю, что стандартный способ сделать это - вызвать контроллер (который запрашивает ваш db) с ajax каждые X секунд и обновить цвета точек в зависимости от ответа. Будьте осторожны при выборе частоты обновления, если у вас много клиентов, у вас будет много запросов.

+0

Большое спасибо за ваш ответ! Вы знаете, как лучше всего показывать значения моей базы данных? Контроллер сделает сайт.findAll() и вернет список ... Я уверен, что я должен использовать renderJSON, но я действительно не знаю, как это работает ... И знаете, могу ли я использовать игру # {jsAction тег или просто вызывать $ .ajax и setInterval? –

+0

Да, вы можете использовать renderJSON с объектом, и он преобразует его в json. Будет проще использовать тег jsAction, но вы можете напрямую использовать jQuery. Вот пример, где вы можете увидеть jsAction и renderJSON в действии: http://geeks.aretotally.in/twitter-playframework-heroku – Mike