-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Формат сообщения:
{
type: 'subscribe',
routes: ['user.chat.live', 'my.custom.route.key'],
auth: {
authUrl: 'http://my-auth-server.ru/auth',
cookie: 'userId=13sdf45; sesID=1345;'
}
}type: 'subscribe', будет передоваться всегда, по этому параметру можно отловить подобные сообщения
routes: [], содержит список топиков, на которые нужно подписать юзера
auth: содержит данные для авторизации.
- Если получаем auth и текущий юзер не авторизован — авторизовываем его
- Если получаем auth и текущей юзер авторизован — переавторизовываем его
- Если после переавторизации сменился эксченж — переподписываем все топики на новый ексченж
- Если текущий юзер не авторизован и мы не получили auth — ошибка!
Все подписки из секции routes всегда добавляем к текущим.
После каждой авторизации/переавторизации не забываем перезаписывать userId и account текущего пользоватея.
Храним где-то отдельно все routes-топики, на которые подписан юзер, в случае если после очередной переавторизации у пользователя сменится account — переподписываем все топики на новый эксченж
Раз в 5 минут (значение должно быть конфигурируемым) перезапрашиваем авторизацию по последнему известному нам authUrl и cookie.
authUrl на основе полученных cookie проверяет пользователя, и если все ок должен вернуть json вида:
{ "userId" : 10034, "account" : "megaplan" }account определяет на какой exchange нужно подписываться для получения сообщений. название exchange'а формируется из префикса + название аккаунта. например "ecomet_megaplan"
Сообщения для публикации должны представлять из себя json формата:
{ "message" : "любые данные, которые будут доставлены в браузер подписчикам",
"allowedUsers" : [10034, 10023, 10005] }allowedUsers — не обязательное поле. Может содержать список id'ов пользователей, которым предназначается это сообщение. Проверка прав происходит на уровне эрланга, и пользователи, которых нет в списке allowedUsers не получат данное сообщение. Если allowedUsers не указан — сообщение получат все на него подписавшиеся.