默认
打赏 发表评论 2
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
跟着源码学IM(九):基于Netty实现一套分布式IM系统
微信扫一扫关注!

本文作者小傅哥,原题“使用DDD+Netty,开发一个分布式IM(即时通信)系统”。为了提升阅读体验,即时通讯网有大量修订和改动,感谢原作者。


0、系列文章



1、本文引言


计算机编程的学习,能不能把知识学到手,讲究的是动手实践。在我编写的文章中,基本都是以实践代码验证结果为核心来讲述文章内容。

从小我就喜欢动手,就以一个即时通信的项目为例,已经基于不同技术方案实现了5、6次,仅仅为了实践技术,截图如下。

1.jpg

正如上图这样:

  • 1)有些是刚学完Socket和Swing的时候,想动手试试这些技术能不能写个QQ出来;
  • 2)也有的是因为实习培训需要完成的项目,不过在有了一些基础后,一周时间就能写完全部功能;
  • 3)虽然这些项目在现在看上去还是丑丑的界面,以及代码逻辑可能也不是那么完善。但放在学习阶段的每一次实现中,都能为自己带来很多技术上的成长。

那么,这次借本文的机会,将IM实践的机会留给你,希望你能用的上。

接下来的内容,我会为你介绍如何开发一个IM的方方面面,包括系统架构、通信协议、单聊群聊、表情发送、UI事件驱动等,以及全套的实践源码让你可以上手学习。

注:源码在本文“4、本文源码”一节的附件处可下载

本文已同步发布于“即时通讯技术圈”公众号,欢迎关注。公众号上的链接是:点此进入

2、知识准备


* 重要提示:本文不是一篇即时通讯理论文章,文章内容全部由实战代码组织而成,如果你对即时通讯(IM)技术理论了解的太少,建议先详细阅读:《新手入门一篇就够:从零开发移动端IM》。

可能有人不知道 Netty 是什么,这里简单介绍下:

Netty 是一个 Java 开源框架。Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
也就是说,Netty 是一个基于 NIO 的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。
Netty 相当简化和流线化了网络应用的编程开发过程,例如,TCP 和 UDP 的 Socket 服务开发。


以下是几篇有关Netty的入门文章,值得一读:


如果你连Java的NIO都不知道是什么,下面的文章建议优先读一下:


Netty源码和API的在线阅读地址:


3、运行效果


在开始学习之前,先给大家演示下本文配套源码的运行效果(源码在本文“4、本文源码”一节的附件处可下载)。

聊天页面:
2.png

添加好友:
3.png

消息提醒:
3-2.png

4、本文源码


本文完整代码附件下载:
NaiveChat-master(52im.net).zip (5.11 MB , 下载次数: 299 , 售价: 1 金币)

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:求助IM退到后台,再次打开时重连时间需要一秒时间下一篇:[已回复] 求助iOS接入MobileIMSDK,发消息时连接会断开的问题

本帖已收录至以下技术专辑

推荐方案
评论 2
除了基于netty实现的im之外,DDD的模式结构也是值得学习的一点
受教了,写的非常详细!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部