2016-04-26 3 views
0

Привет, ребята, у меня есть следующие коды от Pusher, я тестировал, и кажется, что это нормально для использования, например.Pusher Private или Public?

Javascript в Pusher-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> 

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, я создал столбец базы данных «УВЕДОМЛЕНИЕ-CHANNEL», где в этом случае канал private_username-идентификатор называется для этого конкретного пользователя.

Название канала будет $ wpdb-> get_rows из базы данных и эхо в JavaScript так что каждый пользователь будет иметь свой собственный уникальный канал, так как канал указать в JavaScript контролируется на стороне сервера сценария.

Мой вопрос

1) Я строю поток активности, я понимаю, даже без приставкой линии частного (общественный канал), до тех пор, как в стороне сервера PHP Я осторожен в $ pusher-trigger ('ИМЯ КАНАЛА', 'EVENT_NAME', $ data) и убедитесь, что пользователь is_logged_in(), кажется, что проблема не возникает, даже если все мои каналы опубликованы.

В чем недостаток использования общедоступного канала, и когда мне действительно нужно использовать частный канал? И в приведенном выше примере, просто добавив частный префикс, и я уже легко слушаю канал, я не вижу, насколько он безопасен.

Итак, прежде чем я продолжу использовать толкатель для потока активности и уведомления о моем сайте, любые прошлые пользователи могут просветить меня, как мне лучше это делать?

' 

2) Я хотел бы, чтобы другие пользователей "следовать" другим пользователям, поэтому, когда пользователь А и пользователь Б следует User C, пользователь А и пользователь B будут получать уведомление каждый раз, когда пользователь C добавляет блог. Итак, если пользователь А следует 1000 пользователей, я имею в виду, мне нужно создать 1000 разных каналов?

У меня есть таблица выше, если у меня есть что-то от пользователя. Я хочу отправить своим последователям, я получаю последователей из таблицы выше, неэриализую и отправляю каждому из них.

Как я могу создать новый канал для каждого «следующего»? Я застрял здесь, и я не понимаю алгоритма, чтобы лучше реализовать это.

' 

3) В случае яваскрипта кодов выше, я не хочу, чтобы положить его в качестве встроенного кода Javascript и хочу поместить его в отдельном толкаче-client.js. Могу ли я узнать, как я могу отменить CHANNEL_NAME на pusher-client.js динамически или есть другой способ?

ответ

0

Что недостаток использования общедоступного канала, и когда я на самом деле нужен использовать частный канал? И в приведенном выше примере, по просто добавляя частный префикс, и я уже легко слушаю канал , я не вижу, насколько он безопасен.

Недостаток использования общедоступного канала заключается в том, что любой человек может подключаться к каналу и прослушивать события на этом канале. Подумайте о частной службе сообщений, если пользователь A беседует с пользователем B в канале C, а пользователь X подписывается на канал C, X может просматривать все сообщения между A и B.

Частный канал имеет механизм аутентификации, поэтому путем реализации логического кода по методу аутентификации, он может отклонить несанкционированные подписки.

Как я могу создать новый канал для каждого «следующего»? Я застрял здесь , и я не понимаю алгоритма, чтобы лучше реализовать это.

А затем F1, F2, F3 имена каналов должны быть: следующее-A Тогда, когда А публикует блог, F1, F2, F3 может быть уведомлен.