2011-08-19 44 views
1

我是新來的彗星。在Java中使用彗星進行基於Web的聊天?

任何人都可以告訴我如何在java中使用彗星實現基於web的聊天(任何web技術例如JSP,servlet struts等)。

任何幫助大大appriciated。

謝謝。

+0

爲什麼這個問題已被標記爲struts2? –

+0

誰知道,但它很有趣,很多人喜歡聊天客戶端,這將是一個很好的教程。 – Quaternion

回答

2

使用maven(Struts2網站)設置一個基本的Struts2應用程序。

添加spring插件。

創建一個服務對象,它將保存聊天消息的日誌(List<Map<int, String>>)。添加的每條消息都向列表中添加了一個新的地圖,索引1大於提交的消息的前一個。如果列表達到特定大小,請刪除最低的郵件以保持最大大小。 (有更好的數據結構,但你可以弄清楚)。

添加Struts2-JSON插件。

創建兩個json動作(閱讀如何使用Struts2-JSON插件)。 SendMessage和GetMessagesSince Action。還要創建一個基本的動作來創建聊天頁面(我也會使用約定插件)。

SendMessage將有一個消息的setter。爲狀態設置一個getter(返回「成功」或「失敗」)是一個好主意。

GetMessagesSince爲消息提供了一個getter,它將返回{int,Strings}列表。它將爲lastMessage(int)設置一個setter。

現在爲WebPage。此時只需使用短輪詢(在短暫休息後循環中調用)以獲得比'lastMessage'(將從零開始)更大的消息。使用jQuery魔法,您將獲得GetMessagesSince的響應(如果有任何歷史記錄,它將啓動聊天客戶端)。您將使用列表中的最後一條消息爲GetMessagesSince派生新值。

現在有了一些併發魔法,你可以實現長輪詢。您還可以在消息中添加日期,以便人們知道對話的年齡。您還可以通過創建聊天隊列的地圖來添加不同的消息組,例如:Map<String, List<Map<int, String>>>在這種情況下,我選擇了字符串來標識您的聊天室。

如果你是認真的,我甚至可能會創建一個演示(它比聽起來容易)。

+1

只是好奇,但你做了一個聊天客戶端與struts2? – Quaternion