Sistema de notificación con p: encuesta / push.

He intentado implementar el sistema de notificación básico para una red social básica conp:poll en la capa de vista y un simpleNotificationService clase que recibe las nuevas notificaciones de DB y actualiza la lista de notificaciones deNotificationBean que se visualiza para cada usuario. Proceso de flujo similar a este:

-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

Pero la preocupación dep:poll se trata de su rendimiento porque envía una consulta en cada intervalo de caducidad.

PrimeFaces tienePrimePush que se basa en Atmosphere Framework, abre sockets web y parece más adecuado para crear un sistema de notificaciones.

Pero no sé qué componentes y qué propiedades de ellos deberían usarse. Tienep:socket componente conchannel propiedad. ¿Debo usar nombres de usuario comochannel ¿valores? Debajo del código que viene de PrimeFaces se muestra y resume las últimas oraciones:

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

Por lo que entendí deeste ejemplo de escaparate estap:socket escuchanotifications canal. Y el fragmento de código de empujador es:

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

Pero esto notificará a todas las páginas de usuarios, necesito un pulsador que notifique a un usuario específico. Digamos que hay 2 usuarios y supongamos que User1 agrega User2 como amigo. Debe haber algo como eso:

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

Pero no estoy seguro de que este sea el uso correcto para este tipo de requisitos funcionales o no. Teniendo en cuenta la escalabilidad de la aplicación, puede haber un costo costoso de abrir tantos canales por proceso.

Gracias por ayudar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta