【问题标题】:Dynamic page refresh JavaScript/PHP or 'Pusher.com'动态页面刷新 JavaScript/PHP 或“Pusher.com”
【发布时间】:2016-12-14 07:45:37
【问题描述】:

我正在寻找一种解决方案,能够动态地对我的所有当前查看者强制刷新我的网页。如果这是通过 php 完成的,那将是最简单的,但我愿意接受建议。

我进行了一些研究并找到了可能的解决方案 (pusher.com),但我不确定如何执行此操作。下面是我的代码:

我网页上的 JavaScript 添加到 document.readyjQuery':

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 php jquery web pusher


    【解决方案1】:

    当频道'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'。这些必须相同。

    【讨论】:

      【解决方案2】:

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

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

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

      库:

      socketo.me 和 socket.io

      【讨论】:

      • 感谢您的回复。我是他们系统的新手,不确定您所说的 Websocket 连接是什么意思。我没有看到任何选项卡。当我点击我的应用程序时,它会显示概览 |入门 |应用密钥 |统计 |调试 |错误 |网络挂钩 |推送通知 |合作 |应用程序设置。是否有关于如何创建它的教程?
      • WebSocket 是 pusher.com 背后的技术。 WebSocket 只是一种协议,通过单个 TCP 连接提供全双工通信通道。 pusher.com/websockets
      • 打开您放置javascript代码的页面,然后在另一个选项卡上打开带有推送代码的php页面,这应该会触发刷新。如果您的客户端页面是 php,那么 php pusher 代码不应在同一页面上,否则会造成无限循环。 PHP API > 推送器 > PHP 客户端,或 PHP 客户端 > PHP API > 推送器 > PHP 客户端
      猜你喜欢
      • 1970-01-01
      • 2012-03-11
      • 2011-04-27
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 2011-12-29
      • 2016-03-26
      • 1970-01-01
      相关资源
      最近更新 更多