推送私人或公共?
嗨,大家好,我有Pusher的以下代码,我测试过,并且它好像用于例子。推送私人或公共?
的Javascript在推钢app.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>
推钢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)我建立的活动流,我意识到即使没有私营前缀(公共频道),只要在PHP服务器端我在$小心推送器触发器('频道名称','EVENT_NAME',$ data),并确保用户is_logged_in(),即使我的所有频道都是公开的,似乎也没有问题。
使用公共频道有什么缺点,以及我什么时候需要使用私人频道?而在上面的例子中,只需添加私人前缀,我已经可以轻松收听频道了,但我不明白它有多安全。
因此,在继续进一步使用推送器进行活动流并通知我的网站之前,任何过去的用户都可以启发我如何更好地做到这一点?
'
2)I想有其他用户“跟随”其他用户,所以当用户A和用户B如下:用户C,用户A和用户B每当用户C增加会收到通知一个博客。因此,如果用户A跟踪1000个用户,我的意思是我需要创建1000个不同的频道?
我有上面的表,如果我有userA的东西我想发送给他的追随者,我从上面的表中获得追随者,unserialise并发送给他们每个人。
那么如何为每个“关注”创建一个新频道?我卡在这里,我不明白算法,以更好地实现这一点。
'
3)在上述的JavaScript代码的情况下,我不希望把它作为内联Javascript代码,并希望把它放在分离的推动器 - client.js。我可以知道如何动态地将CHANNEL_NAME回显到pusher-client.js,或者有其他方法吗?
什么是使用公共频道的缺点,而当我 实际上必须使用专用通道?而在上面的例子中,通过 只需添加私有前缀,我已经很容易收听到这个频道,我不明白它有多安全。
使用公共频道的缺点是,任何人都可以上传到频道,并在该频道上侦听事件触发。考虑一个私人消息服务,如果用户A在通道C中与用户B聊天,并且用户X订阅通道C,则X可以查看A和B之间的所有消息。
私人通道具有认证机制,所以通过在验证方法上实现逻辑代码,它可以拒绝未经授权的订阅。
那么如何为每个“跟随”创建一个新的频道?我卡在这里 ,我不明白算法,以更好地实现这一点。
一其次是F1,F2,F3 通道名称应该是:以下-A 那么当发布博客,F1,F2,F3可以得到通知。