使用了比较简单的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,显示的表情以表情简写表示