后台怎么主动向前台发送消息?

超凡程序猿 发布于 2015/09/15 15:18
阅读 1K+
收藏 2

@JFinal 你好,想跟你请教个问题:我有一个需求是用户登陆后,管理员过一段时间给该用户发送通知,需要向前台返回未读消息数量,而前台用户也不进行刷新页面,怎么样才能使未读通知数量返回到前端显示呢,之前我的做法是写一个公用的js,每隔15秒访问一次后台,但是如果一个用户打开多张页面,就会一直访问后台,这个做法明显不怎么好。我还想过用socket,因为刚使用,不知道能不能实现这个效果?还有jfinal中是否有socket的插件还是需要自己在web.xml中重新写一个继承WebSocketServlet的servlet?

加载中
0
JFinal
JFinal
    可以用一下 WebSocket,这里有相关问答:http://www.oschina.net/question/1756755_157298
超凡程序猿
超凡程序猿
谢谢
0
杨三更
杨三更
小应用就轮询吧 
超凡程序猿
超凡程序猿
什么意思??
0
JillLiu
JillLiu
Socket js包
超凡程序猿
超凡程序猿
怎么用,有例子吗
0
yak
yak
function check_new_log() {
        var url = "/推送地址?last=" + g_last_id;
        ajax_get(url, function (result) {
            if(result.replace(/^\s+|\s+$/g,'').length==0){
                return;
            }
            var logs = $(result).siblings();
            var log_count = logs.size();
            var first = $(result).first();
            if (log_count == 0 && first != null && first.length > 0)
                log_count = 1;
            if (log_count > 0) {
                g_last_id = first.attr("log");
                //g_last_id = logs.first().attr('log');
                //删除多出来的元素
                if (log_count == 5)
                    $('.TopTweets').empty();
                else
                    $('.TopTweets li').eq(5 - 1 - log_count).nextAll().remove();
                $('.TopTweets').prepend(result);
            }
        });
    }
    /**
     * 使用ajax获取数据
     */
    function ajax_get(the_url, succ_callback) {
        jQuery.ajax({
            type: 'GET',
            cache: true,
            url: the_url,
            success: succ_callback,
            error: function (html) {
            }
        });
    }
  $(document).ready(function () {
        timer(check_new_log, 20000);
 }




0
刘柳
刘柳

dwr 3.0 或者web socket

其实大部分时候,轮询是个不错的主意。

返回顶部
顶部