使用了比較簡單的worker-master架構。java
- 由masterserve進行事件的分發
- 由workserver具體的管理單個用戶的消息請求
- 相關模型連接 Master-Worker模式
public final static boolean SINGLE = true; public final static boolean GROUP = false; /** * status */ public final static int SUCCESS = 0x01; public final static int FAILED = 0x02; /** * message */ public static Integer COMMAND = 0x10; public static Integer TIME = 0x11; public static Integer USERNAME = 0x12; public static Integer PASSWORD = 0x13; public static Integer SPEAKER = 0x14; public static Integer RECEIVER = 0x15; public static Integer CONTENT= 0x16; /** * command */ public final static int COM_LOGIN = 0x20; public final static int COM_SIGNUP = 0x21; public final static int COM_RESULT = 0x22; public final static int COM_DESCRIPTION = 0x23; public final static int COM_LOGOUT =0x24; public final static int COM_CHATWITH = 0x25; public final static int COM_GROUP = 0x26; public final static int COM_CHATALL = 0x27; public final static int COM_KEEP = 0x28; public final static int COM_MESSAGEALL = 0X29;
服務器前先查詢數據庫,從中加載出用戶列表到內存。android
(注:這樣的方式在數據較大時不合適,應該設計好數據庫的消息存儲機制,避免服務器端的數據量大時出現問題,這個小程序由於以前在設計的時候原本沒有加上數據庫的打算,後期加入後,也不想再次重構服務器端)ios
數據庫已經封裝成Dao層,使用雙重鎖的單例模式進行控制訪問git
gson 的好用沒必要多說,寫的時候發現一個小問題gson 在使用時會將Integer以及int都會轉爲Double或者double類型
解決方案以下解決gson將Integer默認轉換成Double的問題github
相似於android在UI界面只能在UI線程中進行更改,在javafx中也是如此。不過以前Android知道其異步方式的實現
在javafx中查閱資料後總結下其更改界面的方法數據庫
Platform.runLater(new Task<String>() { @Override protected String call() throws Exception { //do UI operato return null; } });
在寫圖片的顯示時發現了顯示的問題,特意的查了這部分的材料,其中比較好的幾篇
Java中文件的相對路徑與絕對路徑
Java中文件路徑及其訪問json
方案1 傳統emoji的表情的實現小程序
可是emoji的顯示時要依賴於平臺的,以前在Android端寫過的emoji實現因爲和ios端不統一也從新定製了一份其實早在2010年,Unicode編碼就已經歸入了700多個Emoji表情,因此是能夠支持表情的,只要加載支持Emoji表情的字庫便可 連接How to support Emojis (Part1)安全
方案2 以前在Android端經過對SpannableString 的處理實現添加任何的圖片到文本中
根據這個思路 參考EmojiOneJava實現了功能.
並且javafx的textArea不支持 文字加圖片, 在java分fx中textflow能夠存放子組件,因此顯示界面使用textflow,輸入界面使用textArea,顯示的表情以表情簡寫表示