2016-12-14 59 views
2

我正在寻找一种解决方案,以便能够在我的网页上动态强制刷新所有当前观众。如果这是通过PHP完成的话,这将是最简单的,但我愿意接受建议。动态页面刷新JavaScript/PHP或'Pusher.com'

我已经做了一些研究,并找到了一个可能的解决方案(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,并知道如何?

或者

会有人知道如何完成这一任务的任何图书馆或解决方案?同样,我所要做的就是在我需要的时候动态刷新我的网页给所有当前的观看者。

回答

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'。这些必须是相同的。

1

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

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

pusher.com的替代品,你可以创建自己的PHP WebSocket服务器。

利布斯:

socketo.me和 socket.io

+0

感谢您的回复。我对他们的系统很陌生,不确定你的意思是通过Websocket连接。我没有看到任何标签。当我点击进入我的应用程序时,它显示我概述|入门|应用程序密钥|统计|调试|错误| Webhook |推送通知| Collab |应用设置。有没有关于如何创建这个教程的教程? – user6934446

+0

WebSocket是pusher.com的技术。 WebSocket只是一个协议,通过单个TCP连接提供全双工通信信道。 https://pusher.com/websockets – IamSilviu

+1

打开您放置javascript代码的页面,然后在不同的选项卡上使用推送器代码打开php页面,并触发刷新。如果你的客户端页面是PHP,那么PHP推送器代码不应该在同一页面上,否则它会形成无限循环。 PHP API>推杆> PHP客户端(一个或多个), OR PHP客户端> P​​HP API>推杆> PHP客户端(一个或多个) – IamSilviu