开源中国 动弹模块 的实现原理

单身男青年 发布于 2014/07/16 09:39
阅读 829
收藏 4

@红薯 你好,想跟你请教个问题:我现在想做一个web的实时推送功能,但是由于平台限制,无法使用websocket,我看过开源中国上的动弹模块,感觉非常不错,能请教一下这个模块的实现方案吗?谢谢!

加载中
1
JPer
JPer
最简单的ajax轮训
0
削你
削你
只做pc的话,简单一点flash来做。想支持的多一些commet即可
0
mingshun
mingshun
可以试试socket.io,兼容websocket与非websocket
0
Helloall
Helloall
支持1楼。这是简单的。
0
削死壹狼
削死壹狼
1楼有错别字
0
帖子列表
帖子列表
我想知道数据库怎么存的
atearsan
atearsan
貌似红薯的文章有说过 你得去翻翻
0
小埋酱
小埋酱
mq是比较好的解决方案
0
eechen
eechen
AJAX定时轮询相对更简单。要求实时性更好的话建议使用Comet,可以参看下面这篇文章(含前后端代码和Demo):
http://www.isnowfy.com/comet-web-chat/
http://group.isnowfy.com/index.php
https://github.com/isnowfy/encryptchat/blob/master/protected/backend.php

还有这篇文章:
http://www.xiumu.org/technology/the-php-notes-comet-long-connection-instance.shtml
0
y
yc850903
这是弹出的js代码,是用的timer做定时器,用ajax异步请求刷新页面
<!--
var g_last_id = 5157580;
$(document).ready(function() {
    timer(check_new_log,20000);
    $('#IndustryNews .more .pages a').hover(
        function(){
            $('#IndustryNews .more .pages a').removeClass('on');
            $(this).addClass('on');
            $('#IndustryNews ul').hide();
            var cp = $(this).attr('page');
            $('#IndustryNews ul.p'+cp).show();
        },
        function(){}
    );
    $('#ProjectNews .more .pages a').hover(
        function(){
            $('#ProjectNews .more .pages a').removeClass('on');
            $(this).addClass('on');
            $('#ProjectNews ul').hide();
            var cp = $(this).attr('page');
            $('#ProjectNews ul.p'+cp).show();
        },
        function(){}
    );
    $('#jobs_area .pages a').hover(
        function(){
            $('#jobs_area .pages a').removeClass('on');
            $(this).addClass('on');
            $('#HomeJobTopicPanel table').hide();
            var cp = $(this).attr('page');
            $('#HomeJobTopicPanel table#job_list_'+cp).show();
        },
        function(){}
    );
    $('#questions_area .pages a').hover(
        function(){
            $('#questions_area .pages a').removeClass('on');
            $(this).addClass('on');
            $('#HomeTopicPanel table').hide();
            var cp = $(this).attr('page');
            $('#HomeTopicPanel table#q_list_'+cp).show();
        },
        function(){}
    );
});
function check_new_log(){
    var url = "/widgets/check-top-log?last=" + g_last_id;
    ajax_get(url, function(result){
        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 = 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){}
    });
}

//-->

返回顶部
顶部