我正在寻找一种解决方案,以便能够动态地强制刷新我的网页以供所有当前查看者使用。如果这是通过 php 完成的,那将是最简单的,但是我愿意接受建议。
我做了一些研究并找到了一个可能的解决方案 (pusher.com),但是我不确定如何执行它。下面是我的代码:
我网页上的 JavaScript 添加到 document.ready
jQuery':
var pusher = new Pusher('xxx');
var refreshChannel = pusher.subscribe('refreshing');
refreshChannel.bind('refresh-event', function() {
location.reload(true);
});
这是他们官方文档中我的 php 代码:
<?php
require('Pusher.php');
$options = array(
'cluster' => 'eu',
'encrypted' => true
);
$pusher = new Pusher(
'xxx',
'xxx',
'xxx',
$options);
$data['message'] = 'hello world';
$pusher->trigger('refresh-event', 'refresh', $data);
?>
我知道如何发送如上所示的消息,但我不知道如何启用刷新代码。有没有人以前使用过这个 sdk 并且知道如何使用?
或者
有人知道有关如何完成此任务的任何库或解决方案吗?同样,我要做的就是在需要时为所有当前查看者动态刷新我的网页。
最佳答案
你的回调函数是 refreshChannel.bind(...)
的第二个参数将在 'refresh-event'
时运行在 channel 'refreshing'
上收到. $data
在您的 PHP 中也被传递给该函数,因此您可以随事件发送信息。
执行此操作的代码几乎准确无误,但您似乎忘记了在 javascript 中设置集群,因此无法成功连接。如果您的应用程序在 'eu'
上当您尝试连接时,您需要这样说:
var pusher = new Pusher('xxx', {
cluster: 'eu',
encrypted: true
});
你应该得到 "Could not find app by key xxx. Perhaps you're connecting to the wrong cluster."
当您尝试加载页面时,javascript 控制台中出现错误。
编辑:仔细检查您的 channel 名称和事件在您的触发调用中也是错误的。这是
$pusher->trigger('channel-name', 'event', $data);
编辑 2:同样在您的 javascript 中,您正在调用 channel 'refreshing'
在你的 php 中你称它为 'refresh'
.这些必须相同。
关于javascript - 动态页面刷新 JavaScript/PHP 或 'Pusher.com',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41137256/