Apache MiNa + smack +openfilre 實現多人聊天室
前不久用Socket寫的聊天程式,主要是手機端程式通過Socket連線伺服器端的ServerSocket,然後伺服器端根據客戶端傳送過來統一規範的報文。進行解析再用smack框架轉發到openfire伺服器,最後由openfire伺服器向客戶端程式傳送聊天資訊。
最近發現socket伺服器資源消耗比較大。我是採用阻塞式多執行緒通訊方式,這種方式會造成大量的伺服器資源浪費、長期的佔用伺服器的CUP排程權,並且會長時間阻塞程式,等待客戶端連線、傳送訊息等。
為了解決上面的狀況,Apache MiNa能很好的解決這個問題。Mina採用的是非阻塞式、單執行緒、NIO通訊方式。
非阻塞式通訊的思想是:讓一個執行緒同時完成多件事,這個執行緒會利用完成這件事的空餘時間去完成另一件事,一刻也不閒著。這個執行緒同時也會不斷監控每件事情中需要處理時間的發生,發生一個就處理一件,然後繼續監聽各自事情。
相關文章
- js程式碼實現多人聊天室JS
- Apache Mina實戰Apache
- Python基於Socket實現簡易多人聊天室Python
- Java建立 多人聊天室Java
- Go語言專案實戰:多人聊天室Go
- Java - Apache Mina 簡單示例JavaApache
- [JAVA]多人聊天室控制檯實現,服務端向所有客戶端下發訊息實現Java服務端客戶端
- Java - Apache Mina 自定義協議通訊JavaApache協議
- Android基於XMPP Smack openfire 開發的聊天室(一)【會議服務、聊天室列表、加入】AndroidMac
- Vue開發多人聊天室 覆盤總結Vue
- 原生Node 實現聊天室
- 基於Netty實現的WebSocket聊天室--支援多人同時線上及定時心跳檢測NettyWeb
- [練手專案]Gin+websocket 的多人聊天室Web
- Websocket 直播間聊天室教程 - GoEasy 快速實現聊天室WebGo
- laravel5.4實現實時聊天室Laravel
- JAVA通訊(三)——實現多人聊天Java
- Android基於XMPP Smack openfire 開發的聊天室(二) 【聊天資訊、成員】AndroidMac
- 解析super-smack的smack檔案Mac
- 用go實現併發聊天室Go
- Swoole+React 實現的聊天室React
- 聊天室應用開發實踐(二):實現基於 Web 的聊天室Web
- Android基於XMPP Smack openfire 開發的聊天室(三) 【新舊記錄、踢人】AndroidMac
- Android基於XMPP Smack openfire 開發的聊天室(五) 【邀請、被邀請】AndroidMac
- 如何實現Excel多人共享與協作Excel
- Android github 快速實現多人協作AndroidGithub
- 「擴充」實現評論 @ 多人通知功能
- 【從頭到腳】前端實現多人視訊聊天— WebRTC 實戰(多人篇)| 掘金技術徵文前端Web
- Python 編寫的 線上多人多聊天室伺服器Python伺服器
- ASP.NET SignalR 與LayIM配合,輕鬆實現網站客服聊天室(二) 實現聊天室連線ASP.NETSignalR網站
- Android基於XMPP Smack openfire 開發的聊天室(四) 【建立房間、表單;報文】AndroidMac
- Android基於XMPP Smack openfire 開發的聊天室(七) 【成員狀態、自身狀態】AndroidMac
- SpringBoot 實戰 (十七) | 整合 WebSocket 實現聊天室Spring BootWeb
- tp5+ajax+快取實現聊天室快取
- node+socket.io 實現一個聊天室
- C++ 實現基於TCP的聊天室C++TCP
- Android端實現多人音視訊聊天應用(二):多人視訊通話Android
- Android基於XMPP Smack openfire 開發的聊天室(六) 【加入房間、許可權錯誤】AndroidMac
- Redux應用多人協作的思路和實現Redux