Доброго времени суток. Продолжаю ковырять websocket, а именно Stomp. И возникли вопросы:
1) Как узнать от какого топика отписался юзер в UnsubscribeEvent? Можно ли как-то передавать дополнительные хедеры при отписке в реализации SockJs? Очень долго и много гуглил, уже неделю парюсь на этот счёт.
2) Как принудительно разорвать websocket соединение со стороны сервера?
3) Как зареджектить/запретить подписку на какой-либо топик, если не соблюдены какие-либо условия?
1. никак. стомп фрейм для UNSUBSCRIBE не содержит в себе destination, только sub-id. можно при получении SUBSCRIBE записывать в Map с ключем [sessid + sub-id] (т.к. sub-id уникально только в пределах одной сессии), и значением - destination. И потом при получении UNSUBSCRIBE доставать из мапы дестинейшен.
Но тут надо сразу подумать, какой брокер будет использоваться, встроенный или внешний. Если внешний брокер + несколько параллельных инстансов бэкенда, то UNSUBSCRIBE евент может ведь вообще прийти на другой инстанс бэка. Тогда надо эту "мапу" шарить между инстансами бэка.