Pusher Private还是Public?

时间:2016-04-26 21:32:47

标签: javascript php pusher

嗨大家我有以下来自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>

推钢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-&gt; get_rows和 echo 到javascript,因此每个用户都有自己的唯一频道,因为javascript中指定的频道是由服务器端脚本控制的

我的问题

  

1)我正在构建一个活动流,我意识到即使没有 private - 前缀(公共通道),只要PHP中的服务器端我在$ pusher-trigger('< strong> CHANNEL NAME ',' EVENT_NAME ',$ data)并确保用户is_logged_in(),即使我的所有频道都公开也似乎没有问题。< / p>      

使用公共频道有什么不利之处,我什么时候才能使用私人频道?在上面的例子中,通过添加私有前缀并且我已经很容易收听频道,我看不出它有多安全。

     

所以在我继续使用pusher进行活动流和我的网站通知之前,任何过去的用户都可以告诉我应该如何更好地做到这一点?

'
  

2)我希望其他用户“关注”其他用户,因此当用户A和用户B跟随用户C时,用户A和用户B将在用户C添加博客时收到通知。因此,如果用户A跟随1000个用户,我的意思是我需要创建1000个不同的频道吗?

     

我有上面的表格,如果我有来自userA的东西我想发送给他的粉丝,我从上表中获取粉丝,反序列化并发送给他们每个人。

     

那么如何为每个“跟随”创建一个新频道?我被困在这里,我不理解算法,以更好地实现这一点。

  '
  

3)对于上面的javascript代码,我不希望将其作为内联Javascript代码,并希望将其放在一个单独的pusher-client.js中。我可以知道如何动态地回应CHANNEL_NAME到pusher-client.js还是有另一种方式?

1 个答案:

答案 0 :(得分:1)

  

使用公共频道有什么不利之处,我什么时候做   实际上必须使用私人频道?在上面的例子中,通过   只需添加私有前缀,我已经很容易听   通道,我看不出它有多安全。

使用公共频道的缺点是,任何人都可以订阅频道,并在该频道上监听事件。想想私人消息服务,如果用户A在频道C中与用户B聊天,而用户X订阅频道C,则X可以查看A和B之间的所有消息。

私有通道具有身份验证机制,因此通过在authenticate方法上实现逻辑代码,它可以拒绝未经授权的订阅。

  

那么如何为每个“跟随”创建一个新频道?我被困在这里   并且我不理解算法以更好地实现它。

A之后是F1,F2,F3 频道名称应为:follow-A 然后当A发布博客时,可以通知F1,F2,F3。