Facebook就像Java中的Notification实现一样

时间:2013-08-13 10:38:18

标签: java javascript jquery jsp jsf

我正在为我的项目使用java和jsp。我开发了一个类似facebook的通知图标。我正在通过jQuery进行servlet URL调用。 Servlet检查DB中的值并返回结果。此呼叫间隔为1秒。实施例.-

<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并进行数据库交互。

如果更新数据库,是否有更新通知计数的替代方法?

2 个答案:

答案 0 :(得分:1)

您可以查看ajax推送解决方案,例如cometDwebsocketsocket.io)。使用它,如果数据库更改而不是汇集更改,您将“推送”数据到Web浏览器。 我个人尝试过websocket,结果很好但是浏览器支持可能存在问题。

编辑:

查看有关long polling的文章。 刚刚谈到使用JSR 356(WebSocket)的文章。 stackoverflow上有类似的问题:how to implement facebook like notification?

答案 1 :(得分:1)

如果您确定只有Java-Webapp只与SQL数据库连接,那么最好使用java.util.Observable和他的GoF模式,而不是向SQL-Server询问您在持续1秒。

您也不应该使用$.get。请使用

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

因为您正在按网址重新加载元素。不需要开销。