【发布时间】:2016-04-26 21:32:47
【问题描述】:
嗨,伙计们,我有以下来自 Pusher 的代码,我进行了测试,看起来可以使用,例如。
Pusher-app.php 中的 JavaScript
var pusher = new Pusher('OMITTED_MY_API_KEY', {
cluster: 'ap1',
encrypted: true
});
var channel = pusher.subscribe('**private_username-id**');
channel.bind('my_event', function(data) {
alert(data.message);
});
</script>
Pusher-server.php
require('Pusher.php');
$options = array(
'cluster' => 'ap1',
'encrypted' => true
);
$pusher = new Pusher(
'OMMITED_API_KEY',
'OMMITED_API_KEY',
'OMMITED_API_KEY',
$options
);
$data['message'] = 'hello world';
$pusher->trigger('**private_user_name-id**', 'my_event', $data);
用户表
----------------------------------------------
| ID | username | password | notify_channel |
|--------------------------------------------|
| 1 | userA | kjdiejdk | private_userA-1 |
| 2 | userB | kjdiejdk | private_userB-2 |
| 3 | userC | kjdiejdk | private_userC-3 |
---------------------------------------------
关注者表
---------------------------------------------------------------------------
| INDEX | USERID | FOLLOWERS |
|--------------------------------------------------------------------------|
| 1 | userA | s:47:"array('id' => userA, 'id'=>userC, 'id' =>userD)"; |
---------------------------------------------------------------------------
对于我的每个 wordpress 用户,我创建了一个数据库列“NOTIFY-CHANNEL”,在这种情况下,该特定用户调用了 private_username-id 的频道。
频道名称将是来自数据库的 $wpdb->get_rows 和 echo 到 javascript,因此每个用户都将拥有自己独特的频道,因为 javascript 中指定的频道由服务器端脚本控制。
我的问题
1) 我正在构建一个活动流,我意识到即使没有 private- 前缀(公共频道),只要 PHP 中的服务器端我在 $pusher-trigger('CHANNEL NAME', 'EVENT_NAME', $data) 并确保用户 is_logged_in(),即使我的所有频道都公开,似乎也没有问题。
使用公共频道有什么缺点,我什么时候必须使用私人频道?在上面的例子中,通过添加 private- 前缀,我已经很容易收听频道了,我看不出它有多安全。
因此,在我继续使用推送器进行网站的活动流和通知之前,任何过去的用户都可以告诉我应该如何更好地做到这一点?
'
2) 我想让其他用户“关注”其他用户,所以当用户 A 和用户 B 关注用户 C 时,用户 A 和用户 B 会在用户 C 添加博客时收到通知。那么如果用户 A 关注了 1000 个用户,我的意思是我需要创建 1000 个不同的频道吗?
我有上面的表格,如果我有来自 userA 的东西我想发送给他的追随者,我从上面的表格中获取追随者,反序列化并发送给他们每个人。
那么如何为每个“关注者”创建一个新频道?我被困在这里,我不明白更好地实现这一点的算法。
'
3) 对于上面的 javascript 代码,我不希望将其作为内联 Javascript 代码,而是希望将其放在单独的 pusher-client.js 中。我可以知道如何将 CHANNEL_NAME 动态回显到 pusher-client.js 还是有其他方法?
【问题讨论】:
标签: javascript php pusher