Java 实现即时通讯

1901010134 fb32e15232 上传.idea文件 4 anos atrás
src 8c27483acf twice 4 anos atrás
target fb32e15232 上传.idea文件 4 anos atrás
README.md 38d27e94be twice 4 anos atrás
WebChat.iml fb32e15232 上传.idea文件 4 anos atrás
pom.xml fb32e15232 上传.idea文件 4 anos atrás

README.md

##javaFX运行环境 #####JDK1.8版本,安装javafx #####开发工具:IDEA

从Java7u6开始,JDK(Java开发工具包)包括了JavaFX库。 
因此,要运行JavaFX应用程序,您只需要在系统中安装Java8,使用其他版本JDK还需要额外导入jfxrt.jar等包。
另外,IntelliJIDEA也为JavaFX提供了支持,在使用前需要进行相应配置。
在IDEA中,打开File-->settings-->Languages&Frameworks-->javaFX
在选着安装好的JavaFX Scene Builder 2.0.exe(我安装的是版本2)

##基本响应流程概述 #####Client->Server

请求注册(已注册用户请求登录),请求登录状态
聊天命令分为单人和多人群聊

#####Server->Client

返回登录|注册成功反馈
返回登录|注册失败反馈,及失败原因(用户已经注册|用户尚未注册|密码错误|服务器连接失败等...)
每个用户登录广播用户集
提取数据仓发送消息给指定用户
广播信息    

##两个依赖 ####1.mysql使用依赖

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>

####2.gson的使用

    <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.2</version>
    </dependency>

##创建fxml文件 ####1.可以采用javaFXSceneBuilder进行可视化操作 ####2.自己创建,添加样式功能。

 注:fxml资源文件一定要绑定其对应的View控制器类,可以在SceneBuilder中的左下角
 绑定界面的Controller进行指定,也可以在fxml的源码中修改fx:controller...进行绑定。

####(1)LoginView.fxml(登陆界面)

采用GridPane的布局,GridPane是JavaFX 2.0中功能最强大,最灵活的布局窗格。
它在由行和列组成的灵活网格中布置其子项,与Swing的GridBagLayout或HTML的表格模型非常相似。
密码输入用PasswordField属性,保证隐秘性

####(2)MainView.fxml(聊天界面)

采用GridPane的布局,主要由两种组件搭建HBOX和VBOX
HBox中的H是Horizontal的首字母,意为水平的。HBox即水平的布局,将组件按水平方向依次排列。
VBox中的V是Vertical的首字母,意为垂直的。VBox即垂直的布局,将组件按竖直方向依次排列。

####(3)EmojiSelectorUI.fxml(表情包界面)

VBOX布局

##客户端MainApp ####整体基本架构为MVC

model层通过control进行数据交互同时control层进行login和chatroom界面切换控制。
基本界面切换
参考JavaFX - 实现管理多个Stage窗口及源码解析
1.由stageController进行界面构建和跳转
2.将资源文件(fxml文件)和ID写成静态,分别是每个界面的ID和资源文件的相对路径
3.在start()方法中对StageController控制器进行实例化并用StageController对象加载fxml资源文件。

##服务端Server

Master-Worker模式是常用的并行模式之一,它的核心思想是:系统由两类进程协同工作,即Master进程和Worker进程,
Master负责接收和分配任务,Wroker负责处理子任务。当各个Worker进程将子任务处理完成后,将结果返回给Master进程,
由Master进程进行汇总,从而得到最终的结果.

##舞台控制器Stage ####第一步:创建一个StageController控制器

StageController控制器主要是加载fxml资源文件和对应的View控制器、生成Stage对象
以及对Stage对象进行管理,因此该StageController控制器对象也需要被注入到每个fxml的View控制器中。
控制器在对fxml资源文件加载的时候使用的是Pane这个容器作为最基底的容器。

####第二步:将StageController控制器注入(注册)到每个界面的控制器中

在这里创建一个ControlledStage.java接口,所有的View控制器都去实现这个接口即可

PS:此方法参照CSDN作者老猫,本文连接:http://blog.csdn.net/nthack5730/article/details/51901593  

##表情包

emjio表情包
javafx的textArea不支持 文字加图片,在java分fx中textflow可以存放子组件,
所以显示界面使用textflow,输入界面使用textArea,显示的表情以表情简写表示

未完待续。。。。。