2013-08-13 3 views
0

Я использую java и jsp для своего проекта. Я разработал facebook как значок уведомления. Я делаю вызов URL сервлета jQuery. Сервлет проверяет значение в БД и возвращает результат. Этот интервал вызова составляет 1 секунду. Ex.-Facebook как реализация уведомления в Java

<div id="noti_Container"> 
    <a href="layoutMailbox.jsf"> 
     <img src="#{resource['images:Network.png']}" 
     alt="Notifications" style="width: 25px;" /> 
</a> 

<div id="check" class="noti_bubble">2</div> 
    <script> 
     var int=self.setInterval(function(){clock()},1000); 
     function clock() 
     { 
      $.get('Servlet URL', function(responseText) { 
        document.getElementById("check").innerHTML = responseText; 
        }); 
     } 
    </script> 
</div> 

Но это может быть «тяжелым» подход, поскольку он пингует Servlet каждый второй и делает DB-взаимодействия.

Есть ли альтернатива обновлению количества уведомлений, если БД обновляется?

ответ

1

Вы можете ознакомиться с решениями ajax push, такими как cometD или websocket (socket.io). Используя это, вы будете «нажимать» данные в веб-браузер, если DB изменяет вместо объединения для изменений. Лично я попробовал websocket с хорошими результатами, но могут возникнуть проблемы с поддержкой браузера.

Edit:

Проверьте эту статью о long polling. Просто натолкнулся на статью об использовании JSR 356 (WebSocket). Существует аналогичный вопрос на StackOverflow: how to implement facebook like notification?

0

Если вы уверены, что только conntects Java-WebAPP к SQL-базе данных только, то лучше использовать java.util.Observable и его GoF-шаблон, вместо того, чтобы попросить SQL-сервера для значение, добавленное за последние 1 секунду.

Вы также не должны использовать $.get. Пожалуйста, используйте

function clock() { 
    $('#check').reload('Servlet URL'); 
} 
var int=self.setInterval(clock, 1000); 

Потому что вы перезагружаете элемент по URL-адресу. Накладные расходы не нужны.

+0

Если у вас несколько Tomcats с одним и тем же приложением, вы можете использовать Queuing. –

+0

Я реализовал его, но его не обновлял. Я проверю класс Observable. Благодарю. – theGamblerRises

Смежные вопросы