System powiadomień z p: poll / push

Próbowałem zaimplementować podstawowy system powiadomień dla podstawowej sieci społecznościowejp:poll na warstwie widoku i prostejNotificationService klasa, która pobiera nowe powiadomienia z DB i odświeża listę powiadomieńNotificationBean który jest wyświetlany dla każdego użytkownika. Przepływ procesu podobny do tego:

-Poll calls NotificationBean.getNewNotifications for example every 15 sec.
--getNewNotifications calls NotificationService and DAO methods
---notificationList of user is refreshed
----DataTable on view layer shows new notifications

Ale troskap:poll chodzi o jego wydajność, ponieważ wysyła zapytanie przy każdym wygaśnięciu interwału.

PrimeFaces maPrimePush oparty na Atmosphere Framework, otwiera gniazda sieciowe i wydaje się bardziej odpowiedni do tworzenia systemu powiadomień.

Ale nie wiem, które składniki i jakie właściwości powinny być używane. To map:socket komponent zchannel własność. Czy powinienem używać nazw użytkownika jakochannel wartości? Poniżej kod pochodzący z prezentacji PrimeFaces i podsumowuje ostatnie zdania:

<p:socket onMessage="handleMessage" channel="/notifications" /> 

Z tego co zrozumiałemten przykładowy przykład top:socket słuchanotifications kanał. A fragment kodu popychacza to:

PushContext pushContext = PushContextFactory.getDefault().getPushContext();       
pushContext.push("/notifications", new FacesMessage(summary, detail));

Ale to powiadomi wszystkie strony użytkownika, potrzebuję popychacza, który powiadamia konkretnego użytkownika. Powiedzmy, że jest 2 użytkowników i załóżmy, że użytkownik1 dodaje użytkownika2 jako przyjaciela. Musi być coś. tak:

pushContext.push("User2/notifications", new FacesMessage("friendship request", "from User1"));

Ale nie jestem pewien, czy jest to właściwe użycie dla tego rodzaju wymagań funkcjonalnych, czy nie. Biorąc pod uwagę skalowalność aplikacji, może być kosztowny koszt otwarcia tak wielu kanałów w jednym procesie.

Dzięki za pomoc.

questionAnswers(1)

yourAnswerToTheQuestion