WebSockets - poprawne podejście do tworzenia kanałów i przesyłania danych
Mam scenariusz, w którym chcę poinformować użytkowników o mojej stronie, że ktoś skomentował artykuł, w którym również skomentował. Przypomina to sposób, w jaki SO powiadamia mnie, gdy ktoś odpowiada na pytanie!
Po stronie serwera utrzymuję komentarz, a następnie sprawdzam wszystkich użytkowników, którzy skomentowali ten sam artykuł. Następnie transmituję (używam Atmosphere):
PushContext pushContext = PushContextFactory.getDefault().getPushContext();
for(User u : users){
// channel name, message
pushContext.push("/user_" + u.id, "someone commented! blah blah");
}
„Kanał”, do którego nadaję, jest „własnym” kanałem użytkownika, ponieważ nie chcę, aby każdy użytkownik był powiadamiany. Aby to osiągnąć, używam identyfikatora użytkownika w nazwie kanału.
Czy jest to właściwy sposób zapewnienia, że tylko odpowiedni użytkownicy zostaną powiadomieni?
Chyba też chcę zrobić jeszcze dwie rzeczy:
Pchaj tylko do użytkowników, którzy moim zdaniem są nadal online. Jeśli nie są online, to pchanie do nich marnotrawstwa zasobów.Zaszyfruj wiadomość, ponieważ w przeciwnym razie ktoś mógłby słuchać moich wiadomości, jeśli znają mój identyfikator użytkownika.Czy jest jeszcze coś, o czym muszę myśleć?