2014-04-11 12 views
8

Niedawno używam websocket spring4 do przekazywania wiadomości do użytkownika końcowego.Czy istnieje rozwiązanie, które umożliwia wysyłanie wiadomości do grupy użytkowników (nie wszystkich użytkowników) za pomocą web4neta spring4?

I wiadomo, że istnieją 2 metody (convertAndSend, convertAndSendToUser), aby wysłać wiadomość w klasie SimpMessageSendingOperations.

Ale czy istnieje sposób na wysłanie wiadomości do grupy użytkownika, a użytkownik spoza grupy nie może zasubskrybować wiadomości?

Dziękuję bardzo.

+0

szybkie pytanie: dlaczego użytkownicy nie powinni subskrybować konkretnego tematu? –

+0

Tak, mogą subskrybować inny temat z odpowiednią grupą, ale chcę wiedzieć, jak chronić temat przed użytkownikiem, który nie należy do grupy, aby subskrybować ten temat. Masz jakiś pomysł? –

+2

Mam do czynienia z podobnym problemem. Mam nadzieję, że ktoś może odpowiedzieć !! –

Odpowiedz

6

od wiosny ramowego 4.0.x, możliwe jest wysyłanie wiadomości do grupy użytkowników przez:

  • wyraźnie wysyłanie wiadomości do każdego użytkownika, za pomocą pętli for
  • wysyłanie wiadomości do konkretnego temat, biorąc pod uwagę, że użytkownicy wcześniej subskrybowali ten temat.

Jak już wspomniano, nie chcesz, aby użytkownicy, którzy nie należą do tej "grupy", mogli subskrybować ten temat. Wiąże się to w istocie z funkcjami autoryzacji.

W wersji 4.0.x funkcje zabezpieczeń są implementowane na poziomie HTTP, na przykład podczas fazy aktualizacji HTTP, zanim klienci przejdą na websocket (patrz the websocket-portfolio application).

Funkcja, o którą prosisz, jest zaimplementowana w Spring Security 4.0.0 (zostanie wydana, see this blog post for a full preview).

+0

Dzięki za odpowiedź. Przeczytałem artykuł [this] (http://www.sergialmar.com/2014/03/detect-websocket-connects-and-disconnects-in-spring-4/) i wypróbowałem sposób ApplicationEvent. Ale nie mogę przechwycić SessionConnectEvent, SessionConnectedEvent lub SessionDisconnectEvent, gdy klient jest podłączony, czy to błąd? –

+0

Mam ten sam problem. Istnieje jednak metoda użycia BrokerAvailabilityEvent ([odniesienie] (http://kimrudolph.de/blog/spring-4-websockets-tutorial/)). Próbowałem używać tego w mojej aplikacji i to zdarzenie jest przechwytywane normalnie. – hawaii

Powiązane problemy