【云+社区年度征文】我膨胀了,20年基于Netty写个微信部署到腾讯云!
一、前言
?Netty+JavaFx,开发PC端仿微信,部署到腾讯提供的云服务!
不知道这个项目会不会被马化腾、张小龙等大佬看见!如果看见了不要找我,这个项目仅仅是为了学习搭建,同时没有任何付费商用。但如果找我了,我会很开心?
如果我能早点毕业的程序员??,那么一定会想法参与到即时聊天、社交类的项目中。骨子里却是喜欢那种可以服务上亿人的通信项目,那样的话我的每一行代码,都是有灵魂的。
之所以在20年来写这样一个项目,除了是对 Netty 学习的实践,也是个人对社交通信项目的喜欢。在从学习编程开始陆续仿照做过通信类的项目有10几个,仿照过最早期的QQ、也创造过我自己想象的通信模式、现在又来模仿微信的结构,整个开发编程下来,算是彻底爽了。
那么,接下来我就把做基于Netty+JavaFx实现仿微信项目,部署到腾讯云服务上。实践总是最快的学习途径!
二、项目介绍
在这套IM
中,服务端采用DDD
领域驱动设计模式进行搭建。将 Netty 的功能交给 SpringBoot
进行启停控制,同时在服务端搭建控制台可以非常方便的操作通信系统,进行用户和通信管理。在客户端的建设上采用UI
分离的方式进行搭建,以保证业务代码与UI
展示分离,做到非常易于扩展的控制。
另外在功能实现上包括;完美仿照微信桌面版客户端、登录、搜索添加好友、用户通信、群组通信、表情发送等核心功能。如果有对于实际需要使用的功能,可以按照这套系统框架进行扩展。具体功能点如下;
2. 腾讯云定制宝塔
可能不经常玩云服务或者没有部署过自己博客的小伙伴,不太了解宝塔是个啥。其实它就是一个简单好用的服务器运维面板
,在这里你可以点点点的方式按照java、tomcat、mysql、Nginx等,都是一键式的。
并且得益于腾讯把这些宝塔定制到自己的系统里,所以在安装的时候也是非常方便,不需要在开端口等操作。基本步骤就是,在点击试用系统后进入,选择重置应用,在运维里安装宝塔即可。
重置应用
2. 聊天界面
3. 添加好友
4. 消息提醒
五、源码下载
源码地址:
如果在学习过程中遇到什么问题,欢迎添加作者小傅哥(fustack),感谢支持!
甩一段代码
此项目是基于DDD领域驱动设计的四层架构搭建,整体结构非常清晰。很适合新手学习里面的经验,让自己写出更加优秀的代码!
public class AddFriendHandler extends MyBizHandler<AddFriendRequest> {
public AddFriendHandler(UserService userService) {
super(userService);
}
@Override
public void channelRead(Channel channel, AddFriendRequest msg) {
// 1. 添加好友到数据库中[A->B B->A]
List<UserFriend> userFriendList = new ArrayList<>();
userFriendList.add(new UserFriend(msg.getUserId(), msg.getFriendId()));
userFriendList.add(new UserFriend(msg.getFriendId(), msg.getUserId()));
userService.addUserFriend(userFriendList);
// 2. 推送好友添加完成 A
UserInfo userInfo = userService.queryUserInfo(msg.getFriendId());
channel.writeAndFlush(new AddFriendResponse(userInfo.getUserId(), userInfo.getUserNickName(), userInfo.getUserHead()));
// 3. 推送好友添加完成 B
Channel friendChannel = SocketChannelUtil.getChannel(msg.getFriendId());
if (null == friendChannel) return;
UserInfo friendInfo = userService.queryUserInfo(msg.getUserId());
friendChannel.writeAndFlush(new AddFriendResponse(friendInfo.getUserId(), friendInfo.getUserNickName(), friendInfo.getUserHead()));
}
}
六、总结
- 在体验的过程中发现,腾讯云产品功能确实很丰富。如果你是需要部署一个个人的博客,那么
轻量应用服务器
就可以满足你。同时这里已经支持好了一些博客系统,比如:WordPress、Discuz等。当然你也可以搭建其他静态博客,那么会更加节省资源! - 实践是学习知识的最佳途径,尤其是程序员编程行业,基本很多时候都需要大量的实践来验证你的想法,并从中吸取到有价值的技术经验。
- 嗯,最后希望腾讯云和云+社区越来越好!感谢!欢迎访问和使用:https://console.cloud.tencent.com/