写点什么

MyChat,一个私有的“微信“

发布于: 2021 年 02 月 08 日
MyChat,一个私有的“微信“

星尘的一个朋友


不要抱怨、坚持下去💪。


MyChat


我希望它是一个简单的沟通工具。使用简单的,开发简单的私有的,或可发展成企业级的聊天系统或是组件。但是,越是看起来简单,它的内部就越复杂。这个复杂不是指它的开发难度,而是设计。



之前有人问我(面试官),你说设计模式可以让开发变得容易,又说使用设计模式会让程序变得复杂,这不是自相矛盾吗?我的回答是“如果你只创建一个对象还用工厂模式,那肯定是复杂了,但如果你想扩展你的对象创建,那他就不复杂。因为你开发一次,受用多次,算是一劳永逸了。”


这次 MyChat 的设计,推翻了几次,至少现在我仍不满意,但它确确实实已经做到了一定的扩展性,比如新增一个 UI 功能,我有为其考虑使用的 模板方法模式, 比如你想新增一种消息类型,我在 SDK 包中的监听器可以轻松应对,这些都已经在我迭代的过程中体现出来了。


MyChat 由来


做这个项目的原因和契机有很多,说两个比较关键的。


一是因为一个叫傅政委的男人,关于这个人(https://bugstack.cn/),以后再说,要讲的东西有点多,一篇写不下。


二是对自己一个交代吧,把自己对软件设计的理解,在这个行业的所学所得,还有自认为良好的编码习惯都倾注到这个项目上。如果以后你有机会能够看到 MyChat 项目源码,也希望能评价一番,好的坏的,我都接受。我多么希望有一个能指导自己的人。


MyChat 项目介绍


该项目适合 netty 学习者或进行 IM 相关系统开发者。可以基于该项目快速开发出一个带有通讯能力的应用。


UI 采用的 JavaFx ,了解过 JavaFx 的人都知道这东西在国内的文档表现,为使得页面开发便捷,专门为其开发了一些轮子,比如 FxmlObject ,让你可以轻松的来操作 fxml 文件对象。实现布局的快速调整,功能的快速迭代。


前端程序准备了 mychat-client 客户端模块 SDK(java 语言) ,给你提供足够的 API,将前端开发的权利全都交给你。也就是说,你可以使用任何开发方案,不过要考虑集成问题,因为 JavaFx 可以直接调用 java 程序,所以我这没有集成问题。


后端可以自己部署(开源以后),也可以使用 mychat 云(暂未开放)。


应用部分截图










问题记录


开发 MyChat 遇到了很多问题,这里列举一些随手记的问题和大家分享一下,有的已经解决,有的在该项目中仍然存在.


解决的问题在 MyChat 后续相关文章中会给出我的解决方案.可以关注我一起交流学习.


UI 问题


  1. stage 选择无边框模式后, 页面的拖拽. 缩放问题;

  2. listview 空数据鼠标悬停背景色问题;

  3. 节点边距问题;

  4. listview 鼠标点击,但不选中. 朋友页面使用 listview 实现, 标题也为 listcell 但可点击,不可选中;

  5. sketch 文本过长,显示问题;

  6. 页面关闭问题, 关闭后断开连接并结束进程;

  7. 如何让某个页面置顶, 不可失去焦点?;

  8. 滚动条样式问题;

  9. 滚动条如何处理不占位置;

  10. 群头像如何生成?

  11. 聊天内容如何跟着主页面的缩放进行缩放?

  12. 聊天内容的文本域如何动态调整宽高?使文本合理的展示? (难搞)

  13. javaFx 的边框?边距?背景?


功能问题


  1. 现在 UI 数据都存在缓存中,重启应用后消失,这部分数据如何处理?

  2. 后端哪些数据需要持久化?

  3. 怎么能提高程序的扩展性,增加一类消息时很简单?

  4. UI 客户端没有使用 spring , 应用中使用的 bean 如何管理?

  5. 哪些内容需要做成配置?如何做?

  6. 本地存储使用序列化方式保存 Java bean, 但要存储的对象没有实现序列化接口(组件中的类),如何存储.

  7. 离线消息如何处理?

  8. 心跳机制实现时, 出现偶发空闲检测事件.




欢迎关注我,关注 MyChat。可以扫描下面二维码关注。



发布于: 2021 年 02 月 08 日阅读数: 44
用户头像

个人公众号:星尘的一个朋友 2020.10.28 加入

https://github.com/lvgocc

评论

发布
暂无评论
MyChat,一个私有的“微信“