Лучший способ создать раздел Admin в Grails

Это более просто, чем я первоначально думал.. В основном у Вас есть страница, которая ничего не делает, пока данные, которые Вы хотите отправить, не доступны (скажите, новое сообщение прибывает).

Вот действительно основной пример, который отправляет простую строку после 2-10 секунд. 1 в 3 шансах возврата ошибки 404 (для показа обработки ошибок в ближайшем примере JavaScript)

msgsrv.php


Примечание: С реальным сайтом, выполняя это на обычном веб-сервере как Apache быстро свяжет все "рабочие потоки" и оставит неспособным ответить на другие запросы.. Существуют пути вокруг этого, но рекомендуется записать "сервер длинного опроса" в чем-то как Python , скрученный , который не полагается на один поток на запрос. cometD является популярным (который доступен на нескольких языках), и , Торнадо является новой платформой, сделанной специально для таких задач (это было создано для долго опрашивающего кода FriendFeed)..., но как простой пример, Apache является более, чем соответствующим! Этот сценарий мог легко быть записан на любом языке (я выбрал Apache/PHP, поскольку они очень распространены, и я, оказалось, выполнял их локально)

Затем в JavaScript, Вы запрашиваете вышеупомянутый файл (msg_srv.php) и ожидаете ответа. Когда Вы добираетесь один, Вы реагируете на данные. Тогда Вы запрашиваете файл и ожидаете снова, реагируете на данные (и повторение)

, Что следует, пример такой страницы.. Когда страница загружается, она отправляет начальный запрос для msgsrv.php файл.. Если это успешно выполняется, мы добавляем сообщение к #messages отделение, то после 1 секунды мы вызываем waitForMsg функцию снова, которая инициировала ожидание.

1 секунда setTimeout() действительно ограничитель базовой скорости, она хорошо работает без этого, но если msgsrv.php всегда возвраты немедленно (с синтаксической ошибкой, например) - Вы лавинно рассылаете браузер, и она может быстро замерзнуть. Это было бы лучше сделано, проверив, содержит ли файл допустимый ответ JSON и/или хранение рабочего общего количества requests-per-minute/second и приостановки соответственно.

, Если ошибки страницы, это добавляет ошибку к #messages отделение, ожидает 15 секунд и затем попробовал еще раз (идентичный тому, как мы ожидаем спустя 1 секунду после каждого сообщения)

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

Так или иначе, эти long_poller.htm код, с помощью платформы jQuery:



    BargePoller
    

    

    


    
BargePoll message requester!

9
задан david 27 January 2012 в 20:29
поделиться

2 ответа

Я предпочитаю иметь отдельное приложение для админа. Вставьте все классы домена в плагин и установите этот плагин как в приложение администратора, так и в приложение потребителя.

Таким образом, вы можете настроить контроллеры так, как вам нравится, и не беспокоиться о том, что конечные пользователи ударили их. Общие службы также могут находиться в подключаемом модуле домена.

Существует специальный файл, который вы можете поместить в ваше приложение grails-app / conf под названием BuildConfig.groovy, где вы можете указать "локальные" подключаемые модули, такие как подключаемый модуль домена, которые автоматически добавляются в classpath без необходимости пакетировать / устанавливать плагин. Делает это очень просто.

11
ответ дан 4 December 2019 в 14:30
поделиться

Вы можете создать свои контроллеры администратора, как любой другой контроллер, и использовать фильтр , чтобы гарантировать, что только зарегистрированные пользователи с правами администратора могут получить к ним доступ.

2
ответ дан 4 December 2019 в 14:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: