2015-09-03 2 views
0

мне интересно, если я делаю вещи в пути РайтNode.js/socket.io дизайн путаница

Существует система оповещения в моей системе, которую я реализована следующим образом.

Сервер:

socket.on('do_activity',function(packet){ 
io.emit("notification_found_"+packet.receiver_id,packet); 
}); 

Клиент:

socket.on("notification_found_10",function(){ 
//do some action 
}); 

Примечание: сервер уведомляет пользователя о какой-либо деятельности, найденный пользователем. Переменная пакета содержит идентификатор целевого пользователя (10 в моем случае).

Сервер слушает слушатель do_activity событий и испускает notification_found события клиента

Вопросов:

  • 1) Сервер распространяет «notification_found_<user i>» событие для каждого пользователя с суффиксом ID пользователя. Правильно ли это для внедрить систему уведомлений?
  • 2) Поскольку любой злоумышленник из браузера может испускать событие do_activity , как его защитить?

Любая помощь очень ценится.

+0

Где именно это реализовано? Какая информация известна одному клиенту о другом при инициировании действия? Если есть некоторая произвольная информация, которую вы можете использовать для кодирования вашего приемника, можно сделать это более безопасным. Как и имя пользователя или что-то еще, что сложнее угадать, чем число. И если он реализован на защищенной части сайта, для которой требуются привилегии для доступа, это также снижает проблему. Немного больше информации было бы полезно. –

+0

Я кодирую идентификатор пользователя. Но я спрашиваю, является ли это правильным способом распространения события конкретному пользователю? –

+0

Я вижу, я смотрел на пункт №2, который вы спросили выше, «как его защитить?» Опять же, я думаю, что слишком мало информации, чтобы хорошо ответить на вопрос. Является ли ваш receiver_id socket.id? –

ответ

2

Как комментарий, опубликованный выше, не имеет смысла отправлять уведомления всем пользователям, если они предназначены только для подгруппы/личности.

Я предлагаю вам взглянуть на комнаты и пространства имен, чтобы отделить распределение таких уведомлений. Проверьте это на самом documentation.