作者:小傅哥

博客:bugstack.cn

视频:mp.weixin.qq.com/s/OmXCY4fTf…

源码:https://github.com/fuzhengwei/NaiveChat

本项目是B ^ w L O Z G作者小傅哥运用JavaFxNetty4.xSK R I ipringBootMysql等技能栈和偏向于DDD范畴驱动d F p I / i |规划X 5 H / r方法,建立的仿桌面版微信谈天工程完成通讯中心功用。O ^ ( ) + = 3 假如本X x G E k项目能为您提供协助,请给予支撑(重视、点赞、共享= 5 ! [ Y H)!

一、前语

Netty 的缘分# q x 4 b m :是从 5.0 版别开端,当时网上材料也不多,就跟着学习收拾编写了一整套事例。但也就当我全套的事例编写没多久后,netty u J N X , k ) E5.0,因最新版别的性能问题,被官网下掉了{ a n &并主推 nette { I 3y4.0 版别。好吧!就这样有许多小同伴问我是不是能够写一套 netty4.0 的事例,否则现在看着 5.0 的事例写 4.0 的代码真实难过!

组织!从19年开端陆续编写 netty4.0 事例,从根底篇、中级篇、高级篇以及源码分析共编f # s写了37个章N B T n节,根本能够满意一切小白对 Netty 的入门。现在也是我博客里十分火专题内容了。bugstack.cn

后来越来越多的小同伴开端加我微信,一同讨论 Netty 学习。在讨论的工程中,遇到各种各样的问题,尽管在事例文章中都有所介绍,可是事例终究是引导入门的,并不是一次完整的实践。及时B # 1能看懂只言片语,但真的z m 4 W k上手仍是有一些难度。

为此!在19年结尾,20年的新年里。发起了《Netty+JavaFX实战:仿桌面版微信谈天项目》,并将文章和代码全套整理发布到! / L T ] : = GitChat 专栏,截止到文章发布合计售出有 716 份,尽管不多。但好在没人买后小傅哥!还得到许多小同伴的认可!「在此感谢」


整个对这次项目来说,只有专栏文章部分是付费的,源码其实C { 1 6 n / _一开端便是开源的。只不过, 8 ~ X c我粉丝少宣传部到罢了!

所以这次想经过将这份开源IM代码布置到云上验证功用,从而加强实践的能力。一起也为了多宣传一下,诚心感谢每一位共享I = K和点赞的小同伴

好!那么接下来咱们开端进行服务上云。

云商场太多,尽管占了同伴廉价,要了大厂的一个月免费云服务,但没有让我打广/ | 6 w告!

二、代码开源

开源代码 重视大众号:bugstack虫洞栈,回复源码下载J V )你会取得一个下载链接列表,翻开后里面的第15个「由于1 h L J我有好多开源代码」,记住给个Star

这套 IM 代码分为了三组模块;UI、客户端、服务端。之所以这样拆分,是为了将UI展现 M ! j @ N l S与事务逻辑隔离,运用事情和接口进行驱动,让代码层次更加b { b i V , l洁净整齐易于W = } / J @ R扩展和保护。

序号 工程 介绍
1 itstack-naive-chat-ui 运用JavaFx开发的UI端,在咱u y | E )们的UI端中提供了;登录框体、谈天h w K I c p X / E框体,一起在谈天框体中有大量的行为交互界面以及接口和事情。终究我的U0 L ) d 9I端运用Maven打包的方法向外提供Jar包,以此来到达UI界面与事务行为流程分离。
2 itstack) a X |-naive-chat-clienI ^ f e t / * q P户端是咱们的通讯中心工程,首要运用Netty4.x作为咱们的socket结构来完结通讯交互。而且在此工程中担任引入UI的Jar包,完结UI界说的事情(登录验证、搜索增加H j k H 9 R ,老友、对话告诉、发送信息等等),以及需G B I I 6 N _求运用咱们在服务端工程界说的通讯协议来完结信息的交互操作。
3 itstack-navie-chat-h b e + M mser8 } 9 aver 服务端同样运用Netty4.x作为socket的通讯结构,一起在服务端运用Layui作为办理后台的页面,而且咱们( ) v Z =的服务端选用偏向于DDD范畴驱动规划的方法与Netty调集,以此来到达咱们的结构结构整v w p齐洁净易于扩展。
4 itstack.sql 体系工程数据库表结构以及初始化数据信息,合计6张中心表;用户表、群组表、用户群N = s & k _ r i组相关表、老友表、对话表以及谈天记录表。用户在实践事务开发中F d S U L能够自行拓宽完善,现在库表结构只以中心功用为根底。

三、功用概述

在这套IM中,服务端选用DDD范畴7 ] 4 X L J驱动规划模式进行建立。将 Ne0 ^ wtty 的功用交给 SpringBootU H , ) p n行启停控制,一起在服务端建立控制台能够十分便利的操作通讯体系,进行用户和通讯办理。在客户端的建造上选用UI分离的方法进行建立,以确保事务代码与UI展现分离,做到十分易于扩展的控制。

另外在功用完成上包括;完美模仿微信桌面版客户端、登录、搜索增加老友、用户通讯、群组通讯、表情发送等中心功用。假如有关于实践需求运用的功用,能够依0 M . B l E照这套体系结构进行扩展。具体C s g l功用点如下;

《Netty+JavaFx实战:仿桌面版微信聊天》代码开源、上云部署、视频讲解,只为让你给点个Star!
IM功用概述

四、项目演示

登陆页面

《Netty+JavaFx实战:仿桌面版微信聊天》代码开源、上云部署、视频讲解,只为让你给点个Star!
登陆页面

谈天页面

《Netty+JavaFx实战:仿桌面版微信聊天》代码开源、上云部署、视频讲解,只为让你给点个Star!
谈天页面

增加老友

《Netty+JavaFx实战:仿桌面版微信聊天》代码开源、上云部署、视频讲解,只为让你给点个Star!
增加o k $ t _ ~ T老友

| 5 Y e 8 & S讯提示

《Netty+JavaFx实战:仿桌面版微信聊天》代码开源、上云部署、视频讲解,只为让你给点个Star!
音讯提示

五、服务上云

1. 选择云提供方

其实云商场有许多,乃至你什么都不做广告都会打到你们口。

包括;阿里云、华为云、腾讯云、京东云、等等,依照自己喜好下手。我这儿是小同@ A ? ; z 1 ~伴赠送的华为云的免费试用,你那按需选择即可。

2. 环境装备

5 * = = d & H D装包

  1. jdk-8u231-linux-i586.tar.gz
  2. aA ( H [ 1pache-tomcat-8.5.37.tar.gz5 M j ^ J

东西

  1. FTP 东西

    1. Mac:Fic 7 | n W * 0leZilla
    2. Win:Flxe Ftp
  2. Linux远程连接东西

    1. Mac:用自带的就能够
    2. Win:Xhell 十分好用

命令

  1. 解压缩:tar -zxvf
  2. 环境变量装备 vi /etc/profile
#JDK全局环境变量装备
exportJAVA_HOME=/usr/loc3 & Sal/java/jdk1.8.0_231
e.xportCLASSPATH=$:CLASSPATHn ( y ` o:$JAVA_HOME/lib/
exportPATH=$PATH:$JAVA_HOME/biQ e ( Q S - pn
  1. 查找0 ~ 8 : = c j `占用端口杀死
fuser-v-ntcp3389
kill-s92157
  1. mysql授权
selectuser,hostfrommysql.userwhereuser='root';
GRANTallprivile{ = 6 1 ^ | J DgesON库名.*TO'数据库用户名'@'授权访问的IP'identifiedby'数据库用户暗码';
flushpriv : cileges;
  1. tomcat启停和查看日志
./startup.sh
./M v ) A M f Fshutdown.sh
tail-fcatalina.out

3. 服务装备

关于服务装备在最上面的视频中进行演示操作,其实首要是7 S y 2 . R | f将服务端代码布置到云服务中。这儿最开端首j + n @ X T i要遇到# R p了一些权限和端口访问的问题,全体来说仍是比较顺畅的。

六、项目学习

学习链接:chat.itstack.org/ – 代码开源,文章付费(自愿支撑,交个朋友)

  • 开篇词
  • 第 1 章 – UI开发

    • 1.0:专栏学: D i @ ` 9习简述以及全套源码获取
    • 1.1:PC端微信页面拆分及JavaFx运用
    • 1.2:登陆框体完成(结构界说、输入框和登陆)
    • 1.3:登陆框体事情与接口
    • 1.4:谈天框体完成一(全体结构界说、侧边栏)
    • 1.5:谈天框体完成二(对话栏)
    • 1.6:谈天框体完成三(对话谈天框)
    • 1.7:谈天框体完成四(老友栏)
    • 1.8:谈天框体完成五(老友填充框)
    • 1.9:谈天框体事情界说
    • 1.10:练习篇-谈天表情框体完成
    • 1.11:解答篇-谈天表情框体完成
  • 第 2 章 – 架构规划

    • 2.1:服务端架构规划
    • 2.2:通讯协议包界说
    • 2.3:客户端架构规划
    • 2.4:数据库表结构规划
  • 第 3 章 – 功用完成

    • 3.1:登陆功用完成
    • 3.2:搜索和增加老友
    • 3.3:对话告诉与应答
    • 3.4:用户与老友通讯
    • 3.5:用户与群组通讯
    • 3.6:断线重连恢复通讯
    • 3.7:T * 9 n Z服务端控制台建Y n Q D k – 3 9 b
    • 3.8:练习篇-谈天表情发送功用完成
    • 3.9:解答篇-谈天表情发送功用完成

七、总结l K k R @ q = @ B

  • 整篇内容首要解说实战项目工程《Netty+JavaFx实战:仿桌面版微信谈天》的一个结构结构解说,和布置到云服务器的过程。也是为了便利大家能够在A ; C学习过程中,迅速的入门然后深化学习。
  • 源码是开放的按需获取进行改造成自己需求的就好,这部分源码也融合小傅哥一些开发经历,关于架设h _ E f g e出良好的体系结构上,会有必定的提升。能够经过重视大众号:bugstack虫洞栈,进行获取。
  • 编写技能文章的这段时间也遇到了许多号主老友,他们乃至一向连续输出技能文章,可是根本也没有什么流量。有时候好多好东西仍是需求传达,共享,让多多的原创和优质的内容,多呈现在大家面前。比如那个并不简单的男人:小傅哥

本文运用 mdnice 排版