【云+社区年度征文】我膨胀了,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/
本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
【云+社区年度征文】我膨胀了,20年基于Netty写个微信部署到腾讯云!
不知道这个项目会不会被马化腾、张小龙等大佬看见!如果看见了不要找我,这个项目仅仅是为了学习搭建,同时没有任何付费商用。但如果找我了,我会很开心?
<<上一篇
下一篇>>