2010-08-31 43 views
0

我目前正在使用新的WebSocket協議爲基於Web的聊天應用程序在Java中編寫一個IM服務器。服務器當前偵聽連接併爲每個處理輸入和輸出的連接客戶端創建一個新線程。但是,我無法弄清楚如何在特定線程之間發送消息。發送消息到特定的線程/用戶在即時通訊應用程序

我已經將它設置爲基於Web的客戶端將用戶ID發送到服務器的位置,並且該ID用作使用currentThread.setName()的線程名稱,但我不確定該從哪裏去。

我只用了大約3周的時間,所以我的問題的答案可能會很簡單,或者我可能會對整個事情做完全錯誤的回答。我只需要一個正確的方向。

謝謝!

回答

0

我不認爲你應該重新發明輪子,可以嘗試使用JGroups聊天實施

+0

謝謝你的建議,我會檢查JGroups,但這是一個項目,我爲了學習的目的比任何其他項目都做得更好,所以我寧願不依賴任何其他人的代碼。 – Kyle 2010-08-31 12:57:29

0

你想送什麼樣的信息?有一件事,你可以嘗試被存儲在你的所有線程可以訪問列表你的線程,搜索要發送消息到線程,然後調用線程的方法:

class MyThread extends Thread{ 
    private static List<MyThread> chatClients; 

    public void run(){ 
    for (MyThread t : chatClients){ 
     if (...){ 
     t.sendMessage(...); 
     } 
    } 
    //... 
    } 

    public void sendMessage(...){ 
    //... 
    } 
} 

還要注意那是因爲你正在處理線程,所以你必須牢記同步。

+0

感謝您的回覆。這些消息只是字符串。你的解決方案肯定會奏效。但是,我可能只是偏執狂,會循環列表是選擇線程傳遞數據的最有效方式? – Kyle 2010-08-31 16:00:33

+0

不,你沒有偏執,你很聰明。 :)根據你的情況,可能有更好的方法來做到這一點。我只是想一起舉個例子。 – Michael 2010-08-31 16:05:38

+0

使用地圖並關閉要發送消息的用戶/客戶端。 – rancidfishbreath 2010-08-31 19:59:40

相關問題