2010-06-29 49 views
1

我正在尋找一個庫,它允許我通過套接字將簡單的文本事件從服務器傳遞到客戶端。簡單和輕量級的東西。我可以自己寫,但是決定先檢查這種東西是否存在。這個想法是有一個應用程序生成事件(例如命令被拒絕或發生內部錯誤)並充當服務器。這些事件必須實時傳送給所有連接的客戶端。而客戶端只是一個彈出所述事件文本的托盤圖標應用程序。一些簡單的UDP客戶端/服務器。有誰知道Java是否有一個庫?Java中的事件傳遞庫?

謝謝!

+0

除了能夠發送/接收消息之外,您還尋找哪些其他屬性?因爲沒有更多的信息,RMI似乎是一個不錯的選擇。 – 2010-06-29 17:45:07

+0

爲了簡單起見,我想避免使用RMI。雖然,是的,RMI在這裏會很好。任務是這樣的 - 有一個訂單處理服務器和客戶服務需要知道任何錯誤是積極主動的,而不是被動的。不是一個巨大的推出。 – Daniil 2010-06-29 18:26:00

回答

2

這可以很容易地用XMPP pubsub完成。您可以使用Smack連接到支持pubsub(OpenFire,ejabberd,...)的您所選擇的服務器,以便創建事件的應用程序是發佈者,客戶端都是訂閱者。它需要使用第三方服務器(許多是開源的),但它只是一個用於所有客戶端訪問的單一庫。我有OpenFire的經驗,它可以在15分鐘內設置。

許多人不會考慮這個重量輕,但滾動你自己的pubsub解決方案是沒有必要的。

+0

這是一個有趣的想法。雖然不是很輕巧,特別是因爲我不期望超過10個客戶。但是這給了我一個想法,也許我可以簡單地擁有一個可以向其他人發送消息的即時消息客戶端。那裏有免費的AIM庫嗎? – Daniil 2010-06-29 18:01:01

+0

@達尼爾 - 我相信即使不是所有的IM解決方案都需要一臺服務器。服務器是跟蹤誰登錄以及用戶是否有效並實際傳播消息的服務器。 XMPP是一種IM協議,pubsub擴展是我認爲最符合您需求的。您可以跳過pubsub並使用現有的XMPP客戶端(http://xmpp.org/software/clients.shtml),只需設置聊天室即可。不需要編碼。 – Robin 2010-06-29 18:21:03

+0

是的,一個簡單的AIM客戶端會做一些技巧。連接到AIM服務器併發送IM到預設的刻痕數量。就像一個AIM機器人。 – Daniil 2010-06-29 18:28:51

2

您應該查看JBoss Netty和/或Apache MINA,它們都是構建網絡協議的框架。你是否認爲它們很簡單是值得商榷的,雖然你當然可以用它們來構建輕量級的實現。

3

有很多種可能的解決方案,但如果你想簡單的,我建議你嘗試Hazelcast

這是因爲使用java.util中的那樣簡單。{隊列,集,列表,地圖}。只需將hazelcast.jar添加到您的類路徑中並開始編碼即可。