Juggernaut / Socket.io и аутентификация подписки на однопользовательский канал - PullRequest
4 голосов
/ 14 июня 2011

Я новичок в Node JS и Socket IO, но я слышал о них много хорошего, поэтому я хотел взглянуть на них для использования в качестве системы уведомлений в реальном времени.

ВВ моем сценарии пользователь откроет сокет для прослушивания уведомлений, которые публикуются для пользователя - каждый пользователь откроет подключение к своим СОБСТВЕННЫМ уведомлениям, а не к «общедоступному» каналу.

var jug = new Juggernaut;
var channel = "/user/" + userId + "/notifications";
jug.subscribe(channel, function(data){
    console.log("Got data: " + data);
});

Итакпочти во всех случаях это будет 1 пользователь, подписывающийся на 1 канал.

У меня есть 2 проблемы:

  1. Все примеры Juggernaut, которые я видел, касаются нескольких клиентов, подписывающихся на 1 канал- это заставляет меня думать, что он не предназначен для использования при обмене данными 1-1.
  2. Есть ли способ добавить аутентификацию, чтобы только указанные пользователи получали сообщение (т.е., текущий зарегистрированный пользовательединственный, кто может подписаться на его / ее канал уведомлений).Если бы был способ передать дополнительные данные о подписке, этого, вероятно, было бы достаточно (хешируйте идентификатор пользователя и, возможно, используйте его в качестве токена?).

Есть ли у кого-нибудь опыт работы с Juggernaut, который мог бы иметьсталкивался с таким сценарием раньше?

1 Ответ

0 голосов
/ 14 июня 2011

Все примеры Juggernaut, которые я видел, касаются нескольких клиентов, подписывающихся на 1 канал

В чем разница между многими подписчиками и одним подписчиком издателя?

Есть ли способ добавить аутентификацию, чтобы только указанные пользователи получали сообщение

Конечно.Требовать, чтобы канал имел аутентификацию, и поскольку он будет по идентификатору пользователя, то вы уже знаете, что нужно для его защиты.

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

...