Apache MiNa + smack +openfilre 實現多人聊天室

gladmustang發表於2014-12-29

前不久用Socket寫的聊天程式,主要是手機端程式通過Socket連線伺服器端的ServerSocket,然後伺服器端根據客戶端傳送過來統一規範的報文。進行解析再用smack框架轉發到openfire伺服器,最後由openfire伺服器向客戶端程式傳送聊天資訊。

最近發現socket伺服器資源消耗比較大。我是採用阻塞式多執行緒通訊方式,這種方式會造成大量的伺服器資源浪費、長期的佔用伺服器的CUP排程權,並且會長時間阻塞程式,等待客戶端連線、傳送訊息等。

為了解決上面的狀況,Apache MiNa能很好的解決這個問題。Mina採用的是非阻塞式、單執行緒、NIO通訊方式。

非阻塞式通訊的思想是:讓一個執行緒同時完成多件事,這個執行緒會利用完成這件事的空餘時間去完成另一件事,一刻也不閒著。這個執行緒同時也會不斷監控每件事情中需要處理時間的發生,發生一個就處理一件,然後繼續監聽各自事情。

相關文章