0

我正在创建一个实时流媒体网站,并且通过浏览器刷新解决了 10 个用户问题中的 9 个。

所以...我正在尝试找到一种方法来通过单击按钮强制刷新所有查看器。

但是,我希望我的管理员是唯一可以访问此功能的人,因此我想将此按钮放在主题管理部分中。

我已经摆弄并阅读了许多指向“location.window”选项的线程。但是,我仍然不确定如何让所有观众立即直播。

4

2 回答 2

0

您可以通过设置一个计时器并通过 AJAX 每 xx 秒轮询一次服务器来实现类似的效果。每当管理员按下“强制刷新”按钮时,浏览器将在下一次“投票”时重新加载页面。

例如;

在服务器上,“令牌”存储在 JSON 文件中;

token.json

{currentToken:1039593029484930294820}

在每个页面上,都包含一个 JavaScript,每 xx 秒轮询一次服务器以检查令牌。如果token已经修改,刷新页面;

如果管理员想要强制刷新,则令牌无效,并生成一个新令牌并将其保存在token.json. 所有仍在使用旧令牌的用户都应刷新页面。

示例(假设 jQuery)

<script type="text/javascript">

    $(document).ready(function() {

        var currentToken;

        var checkToken = function() {
            $.getJSON('/token.json', function(data) {
                if (!currentToken) {
                    // first poll
                    currentToken = data.currentToken;
                    return;
                }

                if (currentToken !== data.currentToken) {
                    // a new token is set by the admin. Reload the page
                    window.location.reload();
                }
           });
        };

        // check if the token is still valid every 2 seconds
        window.setTimeout(checkToken, 2000);

    });
</script>  
于 2013-03-28T23:52:29.823 回答
0

根据 thaJeztah 所说的,进行一些修改......

创建一个名为 token.json 的文件,其中包含以下内容:

{"currentToken":"1039593029484930294820"}

使用以下脚本,假设 jQuery(1.10.2 为我工作)

<script>
$(document).ready(function() {
    var currentToken_js;
    var checkToken = function() {
        $.getJSON( '/token.json', {
            tags: "currentToken",
            tagmode: "any",
            format: "json"
        }).done(function( data ) {
            if (!currentToken_js) {
                // first poll
                currentToken_js = data.currentToken;
                return;
            }
            if (currentToken_js != data.currentToken) {
                currentToken_js = data.currentToken;
                window.location.reload();
            }
        });
        window.setTimeout(checkToken, 2000);
    };
    window.setTimeout(checkToken, 2000);
});
</script>

您所要做的就是修改 token.json 文件中 currentToken 的值,所有实例都应该刷新。

于 2015-01-08T15:38:12.690 回答