推手私人或公共
Pusher Private or Public?
嗨,伙计们,我有以下来自 Pusher 的代码,我测试过,
例如使用似乎还可以。Pusher-app 中的 Javascript.php
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>
推送服务器.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并回显到 javascript,因此每个用户都将拥有自己唯一的通道,因为 javascript 中指定的通道由服务器端脚本控制。
我的问题
1)我正在构建一个活动流,我意识到即使没有私有前缀(公共频道),只要PHP中的服务器端我小心$pusher触发器("频道名称","EVENT_NAME",$data)并确保用户is_logged_in(),即使我所有的频道都公开,似乎也没有问题。
使用公共频道的缺点是什么,我什么时候必须实际使用专用频道?在上面的实例中,只需添加 private- 前缀并且我已经可以轻松收听该频道,我看不到它的安全性。
因此,在我继续进一步使用推送器进行活动流和网站通知之前,任何过去的用户都可以启发我应该如何更好地做到这一点?
'
2)我想让其他用户"关注"其他用户,因此当用户A和用户B关注用户C时,每当用户C添加博客时,用户A和用户B都会收到通知。因此,如果用户 A 关注 1000 个用户,我的意思是我需要创建 1000 个不同的频道吗?
我有上面的表格,如果我有来自用户 A 的内容,我想发送给他的关注者,我会从上表中获取关注者,取消序列化并发送给他们每个人。
那么如何为每个"关注"创建一个新频道呢?我被困在这里,我不明白更好地实现这一点的算法。
'
3)对于上面的javascript代码,我不希望将其作为内联Javascript代码,而是希望将其放在单独的pusher-client.js中。我可以知道如何动态地将CHANNEL_NAME回显到推送器客户端.js还是有其他方法?
使用公共频道有什么缺点,我什么时候该 实际上必须使用私人频道?在上面的例子中,通过 只需添加私有前缀,我已经很容易听了 频道,我看不出它有多安全。
使用公共频道的缺点是,任何人都可以订阅频道,并监听该频道上的事件触发。想想一个私信服务,如果用户A在频道C与用户B聊天,用户X订阅频道C,X可以查看A和B之间的所有消息。
专用通道具有身份验证机制,因此通过在身份验证方法上实现逻辑代码,它可以拒绝未经授权的订阅。
那么如何为每个"关注"创建一个新频道呢?我被困在这里 而且我不明白算法可以更好地实现这一点。
A 后跟 F1、F2、F3频道名称应为:以下-A然后当 A 发布博客时,可以通知 F1、F2、F3。