前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyChat,一个私有的“微信“

MyChat,一个私有的“微信“

作者头像
星尘的一个朋友
发布2021-03-02 14:37:17
2.9K0
发布2021-03-02 14:37:17
举报

星尘的一个朋友

不要抱怨、坚持下去?。

MyChat

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

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-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 星尘的一个朋友
    • MyChat
      • MyChat 由来
        • MyChat 项目介绍
          • 应用部分截图
            • 问题记录
              • UI 问题
              • 功能问题
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档