我正在创建一个实时流媒体网站,并且通过浏览器刷新解决了 10 个用户问题中的 9 个。
所以...我正在尝试找到一种方法来通过单击按钮强制刷新所有查看器。
但是,我希望我的管理员是唯一可以访问此功能的人,因此我想将此按钮放在主题管理部分中。
我已经摆弄并阅读了许多指向“location.window”选项的线程。但是,我仍然不确定如何让所有观众立即直播。
我正在创建一个实时流媒体网站,并且通过浏览器刷新解决了 10 个用户问题中的 9 个。
所以...我正在尝试找到一种方法来通过单击按钮强制刷新所有查看器。
但是,我希望我的管理员是唯一可以访问此功能的人,因此我想将此按钮放在主题管理部分中。
我已经摆弄并阅读了许多指向“location.window”选项的线程。但是,我仍然不确定如何让所有观众立即直播。
您可以通过设置一个计时器并通过 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>
根据 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 的值,所有实例都应该刷新。