2012-04-22 76 views
3

我正在嘗試向我的webapp添加一些功能,例如「實時用戶到用戶」聊天(如Facebook的聊天)和實時通知系統。JSF + AJAX推送:實時聊天/通知系統

讓我們考慮一下這樣的場景: 我們有兩個用戶A和B

A如果B和A之間的聊天窗口打開在B的瀏覽器發送一條消息給B.

,我們更新它,在B的瀏覽器上顯示新消息。 如果窗戶沒有打開,我們需要在B的瀏覽器上顯示通知或其他內容。

因此,將PrimeFaces對話框作爲聊天窗口並使用PrimeFaces NotificationBar來顯示通知,我該怎麼做?

我無法使用PrimeFaces的推送功能,因爲他們不能使用Glassfish。

我已經發現了ICEPush,這似乎是一個很好的方法來做到這一點,但關於「渲染組」的事情阻止了我嘗試它。 如果ICEPush談論羣組,我該如何更新一個單一的客戶端?

我應該爲每個客戶創建一個新組嗎?

類似於: B有一個「BwithA」組,當A向B發送消息並且聊天已打開時會更新,而聊天窗口關閉時會更新一個「notificationsB」組?

我找不到如何做到這一點,因爲即使以這種方式使用組,A也必須告訴B他需要更新,並且A不知道B是否必須更新對話框或notificationBar!

我希望問題很清楚,因爲解釋它並不容易|

感謝提前:)

+1

這是不適合JSF + PrimeFaces,而不是嘗試使用jQuery。以下是一個示例:http://code.google.com/p/jquery-stream/wiki/ChatExample – 2012-04-22 21:00:52

+0

感謝您的鏈接。 你是說沒有可以處理它的JSF庫? ICEFaces或RichFaces都不是?因爲我不能在我的項目中真正使用jQuery! – StepTNT 2012-04-23 06:56:17

+0

我在說的是push/poll組件對於處理實時聊天的聊天應用程序並不是很好。相反,你應該使用更輕的東西,jQuery提供了這個。無論如何,您可以嘗試使用JSF + RichFaces推送和輪詢(檢查輪詢示例http://richfaces-showcase.appspot.com/richfaces/component-sample.jsf?但刷新時間並不像您所能認爲) – 2012-04-23 14:54:51

回答

1

我不知道一個專業的Java程序員將如何解決你的問題,但是當我想創造一個聊天,我用標準Primefaces遠程命令組件和回撥參數創建聊天並從服務器向用戶發送新消息。網頁上有p:remoteCommand組件。該組件的目的是在調用動作偵聽器時從特定用戶獲取最新消息。新消息通過「回調參數」從服務器傳遞給javascript函數(組件的oncomplete事件處理程序)。該功能然後檢查是否有任何消息並將它們附加到聊天框。

有關詳細信息,請參閱How to create JSF chat with AJAX

UPD:上述方案是過時的。現在我將使用JAX-RS Web服務或Web套接字來實現聊天。也有實時數據流式傳輸的商業解決方案:PubNub

+0

基本上是我已經在使用輪詢。我想要一個推送版本來避免每秒發出一個新的請求! – StepTNT 2012-05-20 11:34:17