动态页面刷新 JavaScript/PHP 或 'Pusher.com'

Dynamic page refresh JavaScript/PHP or 'Pusher.com'

我正在寻找一种解决方案,以便能够动态地强制刷新我的网页给所有当前查看者。如果通过 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 并且知道如何使用?

或者

有人知道关于如何完成此任务的任何库或解决方案吗?同样,我要做的就是在需要时为所有当前查看者动态刷新我的网页。

您的客户端(具有 JavaScript 代码的页面)与 pusher.com 建立 WebSocket 连接。您必须通过 php 脚本触发(= post 数据)到推送器 api 服务器,推送器会将您的数据(事件名称 + 参数)转发给所有客户端(连接的套接字)。

如果您在 index.php 中有您的 php 代码并通过 http 访问它,它将向推送器发送数据,他会通知您的客户。

作为 pusher.com 的替代方法,您可以创建自己的 php WebSocket 服务器。

图书馆:

socketo.me 和 socket.io

只要在通道 'refreshing' 上收到 'refresh-event',您的回调函数即 refreshChannel.bind(...) 的第二个参数将 运行。 PHP 中的 $data 也会传递给该函数,因此您可以随事件发送信息。

您执行此操作的代码几乎准确无误,但您似乎忘记了在 javascript 中设置集群,因此无法成功连接。如果您的应用在 'eu' 集群上,您需要在尝试连接时说明:

var pusher = new Pusher('xxx', {
  cluster: 'eu',
  encrypted: true
});

当您尝试加载页面时,您应该在 javascript 控制台中收到 "Could not find app by key xxx. Perhaps you're connecting to the wrong cluster." 错误。

编辑:仔细检查您的频道名称和事件在触发调用中的方式也是错误的。这是

 $pusher->trigger('channel-name', 'event', $data);

编辑 2:同样在您的 javascript 中,您调用频道 'refreshing',在您的 php 中,您调用它 'refresh'。这些必须相同。