开发即时通讯(即时通讯IM系统开发)

2025-04-17 13:40:01 :0

开发即时通讯(即时通讯IM系统开发)

各位老铁们好,相信很多人对开发即时通讯都不是特别的了解,因此呢,今天就来为大家分享下关于开发即时通讯以及即时通讯IM系统开发的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

即时通讯IM系统开发

我于2014年开启即时通讯的开发之路,历经从服务端到客户端,从第三方到自研,经历过诸多的研发难题,都一一破解。现将经验总结如下,希望对行业内从事IM开发的程序员有所帮助。

①P2P方式

P2P方式多用于局域网内聊天,这种方式在有种种限制和不便。一方面它只适合在线的点对点消息传输,对离线,群组等支持不够。另一方面由于 NAT 的存在,使得不同局域网内机器互联难度大大上升,在某些网络类型(对称NAT)下无法建立连接。使用P2P方式的软件在启动后一般做两件事情:

1、进行UDP广播:发送自己信息和接受同局域网内其他端信息。

2、开启TCP监听:等待其他端进行连接。

②服务器中转方式

大部分的互联网IM产品都采用服务器中转这种方式进行消息传输,相对于P2P的方式,具有有以下的优点:

1、支持更多P2P无法支持或支持不好的业务,如离线消息,群组,聊天室。

2、方便业务逻辑的拓展和新旧版本的兼容,当然它也有自己的问题,就是服务器架构复杂,并发要求高。

通过以上的比较,建议我们在开发IM系统的时候使用服务器中转的方式。


IM的网络连接方式有基于TCP的长连接和基于HTTP短连接两种:

①基于TCP的长连接

基于TCP长连接则能够更好地支持大批量用户,问题是客户端和服务器的实现比较复杂。也有一些改进,比如下行使用MQTT进行服务器通知/消息的下发,上行使用HTTP短连接进行指令和消息的上传。这种方式能够保证下行消息/指令的及时性,但是在弱网络下上行慢的问题还是比较严重,早期的来往就是基于这种方式。

②基于HTTP短连接

常见于WEB IM系统(现在很多WEBIM都是基于WebSocket实现),它的优点是实现简单,方便开发上手,问题是流量大,服务器负载较大,消息及时性无法很好地保证,对大规模的用户量支持不够,适合小型的IM系统。

IM常见的协议有:XMPP,MQTT,私有协议。各种协议优缺点情况如下:

①XMPP协议

优点:协议开源,可拓展性强,在各个端(有各种语言的实现,对于前期入门级的开发者是很好的选择,方便进入IM开发的程序员快速上手。

缺点:XML表现力弱,有太多冗余信息,流量大。

常见案例:Gtalk、新浪微博、Facebook。

②MQTT协议

优点:协议简单,流量少。

缺点:不是一个专门为IM设计的协议,多使用于推送。

③私有协议

几乎所有主流的IM APP都是使用私有协议。

优点:高效,节约流量(一般使用二进制协议),安全性高,难以破解。

缺点:开发初期没有现有样列可以参考,对于参与IM开发的程序员的要求比较高。

常见案例:微信、钉钉。

根据以上的对比,我们得出结果,一个好的协议需要满足高效、简洁、节约流量、易于拓展等要求,同时又能够和当前的开发团队的技术堆栈匹配,不能选择一个他们很难上手的。

这里再提一下,我当时开发IM系统的时候,上手用的是XMPP,在使用的过程中发现了很多问题,踩了很多坑。

①实时性原则

消息实时到达接收方,如果用户在线,则消息实时到达,如果用户不在线,则消息在用户登录后到达。由于网络波动,以及移动端操作系统对应用前后台切换的管理,如何实现用户连接管理、消息实时推送,推送失败的处理方式,客户端重连机制,消息如何补齐等,都需要IM系统考虑。由于TCP开发略微复杂,早期的基于HTTP短轮询、长轮询的低效的技术方案,也无法达到实时性的要求。

②可靠性原则

是指我们经常听到的“消息送达”,通常用消息的不丢失和不重复两个技术指标来表示。可靠性是要确保消息被发送后,能够被接收者收到。由于网络环境的复杂性,以及用户在线的不确定性,消息的可靠性(不丢失、不重复)是IM系统的核心指标,也是IM系统实现中的难点之一。总体来说,IM系统的消息“可靠性”,通常就是指聊天消息投递的可靠性(准确的说,这个“消息”是广义的,因为还存用户看不见的各种指令和通知,包括但不限于进群退群通知、好友添加通知等,为了方便描述,统称“消息”)。

从消息发送者和接收者用户行为来讲,消息“可靠性”应该分为以下几种情况:

1、发送失败:对于这种情况要感知到,明确反馈给发送方。如果此消息没有发送成功,发送方可以选择重试或者稍后再试。

2、发送成功:如果接收方处在“在线”状态,应该立即收到此消息。如果接收方处在“离线”状态不能收到消息,一旦上线则立刻收到消息。

3、消息不能重复:简言之就是发送的一条消息不能被重复收到多次。

③一致性原则

系统中要重视消息的时序问题,不能出现发送的消息顺序颠倒的问题。通常出现时序的问题有以下的原因:

1、网络传输延迟导致时序不一致。不同用户发送的消息到达服务器的延时差异较大,给消息时序性带来挑战。早期开发过程中经常会遇到这种问题。

2、分布式系统的出现导致时序不一致。IM系统模块众多,接入层、消息逻辑层等、每层都分布式集群化,这些应用分布在不同的机器上,如何保证时序是个难点。

④扩展性原则

扩展性是IM系统后期要考虑的问题,包括功能的扩展,服务器的扩展等,这次就先不展开阐述。

Mina和Netty都是Java领域高性能和高可伸缩性网络应用程序的网络应用框架。

Mina是 Apache 组织的项目,它为开发高性能和高可用性的网络 应用程序提供的框架。当前的Mina版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序。目前正在使用 Mina的 软件有:Apache Directory Project、AsyncWeb、AMQP(Advanced Message Queuing Protocol)、RED5 Server(Macromedia Flash Media RTMP)、ObjectRADIUS、Openfire等。

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、 事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说Netty是一个基于NIO的客户端和服务器端框架,使用Netty可以确保你快速和简单的开发出一个网络应用。

虽然我使用过Mina,但是建议开发选型上使用Netty 。因为Netty有对google protocal buf的支持,有更完整的ioc容器支持(spring,guice,jbossmc和osgi)。Mina更新到2.0就不再更新了,而Netty一直在更新,目前最新发布的版本已经更新到4.1,从版本更新角度可以看出Netty的社区很活跃,修复问题一直在持续,这将对我们选择它进行开发带来很多便利。

单体Netty IM系统,可以支持10万并发,如果机器性能良好的情况下可以超过10万。

分布式的Netty IM系统,可以支持更高的并发数。各组件的功能如下:

①IM Server 连接器:主要用来负责维持和客户端的TCP连接。

②缓存:负责用户、用户绑定关系、用户群组关系的缓存。 缓存临时数据、加快读速度。可以做成集群方式。

③数据库:用户、群组、离线消息。可以做成集群方式。

④消息队列:用户状态广播、群组消息广播。可以做成集群方式。

开发环境推荐使用netty-4.1.30这个版本,jdk使用1.8及以上版本。如下所示:

io.netty

netty-all

4.1.30.Final

①开发框架采用Netty + Spring(Spring4.x)。

②Spring采用Spring cloud。基于restful 短连接的分布式微服务架构,完成用户在线管理、单点登录系统。

③消息队列采用rocketMQ 高速队列,整流作用。

④数据库采用MYSQL。

⑤协议JSON +自定义数据包采用Fastjson。

基于Netty的IM开源代码在网上有很多,这里就不列举了,可以自行去git上下载。我认为关键是把概念理清楚,技术堆栈选好,总体框架定好,接下来就是开发一个适合中小企业的IM系统了,但是要考虑到后期的扩展性,因为一个好的产品不能自己用,要让更多的人使用。

开发一款即时通讯拉人APP需要准备哪些

1.高性能(单机可支持几十万至百万人同时在线)2.轻量、可扩展性极强 3.支持集群多机部署 4.支持 SSL/TLS 加密传输 5.消息格式极其简洁(JSON)6.支持多种协议(Socket自定义IM协议、Websocket、Http),可分别独立部署。

即时通讯聊天app软件开发制作(定制+开发+源码)

1.
了解需求:需求分析是指在开发app前做好市场调研
2.
开展项目设计:在需求的基础上,开展项目设计。
3.
源码软件制作:确定好方案后,签订合约交付定金,开始UI页面设计和程序开发了
4.
源码软件测试:系统的各项功能测试以及问题修复后再次测试等
百度

关于开发即时通讯和即时通讯IM系统开发的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

开发即时通讯(即时通讯IM系统开发)

本文编辑:admin

本文相关文章:


iphone系统下载(iPhone更新系统下载好了点击安装一直在安装)

iphone系统下载(iPhone更新系统下载好了点击安装一直在安装)

大家好,关于iphone系统下载很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于iPhone更新系统下载好了点击安装一直在安装的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对

2025年11月16日 21:00

手机电脑系统下载安装(请问手机上可以下载电脑系统吗)

手机电脑系统下载安装(请问手机上可以下载电脑系统吗)

这篇文章给大家聊聊关于手机电脑系统下载安装,以及请问手机上可以下载电脑系统吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录请问手机上可以下载电脑系统吗手机上怎么装电脑系统请问手机上可以下载电脑系统吗1、电脑系统可以下载到手机

2025年11月13日 10:30

免费解除健康系统限制软件(怎么解开健康系统的限制)

免费解除健康系统限制软件(怎么解开健康系统的限制)

大家好,今天小编来为大家解答以下的问题,关于免费解除健康系统限制软件,怎么解开健康系统的限制这个很多人还不知道,现在让我们一起来看看吧!本文目录怎么解开健康系统的限制腾讯健康系统怎么解除王者荣耀怎么解除健康系统时间限制怎么解除健康系统如何去

2025年11月12日 14:30

雨林木风系统怎么样(雨林木风系统和正版的差别)

雨林木风系统怎么样(雨林木风系统和正版的差别)

大家好,关于雨林木风系统怎么样很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于雨林木风系统和正版的差别的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录雨

2025年11月11日 18:15

驱动精灵官网下载地址(刚安装了新电脑系统没有任何驱动,怎么办)

驱动精灵官网下载地址(刚安装了新电脑系统没有任何驱动,怎么办)

各位老铁们好,相信很多人对驱动精灵官网下载地址都不是特别的了解,因此呢,今天就来为大家分享下关于驱动精灵官网下载地址以及刚安装了新电脑系统没有任何驱动,怎么办的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录刚安装

2025年11月11日 17:15

金山u盘卫士下载(我在MAC系统上怎么删除U盘里的文件)

金山u盘卫士下载(我在MAC系统上怎么删除U盘里的文件)

大家好,今天小编来为大家解答以下的问题,关于金山u盘卫士下载,我在MAC系统上怎么删除U盘里的文件这个很多人还不知道,现在让我们一起来看看吧!本文目录我在MAC系统上怎么删除U盘里的文件U盘显示状态良好,但是空间已满,无法打开及格式化U盘在

2025年11月8日 20:15

在线crm系统(在线CRM系统有哪些优势)

在线crm系统(在线CRM系统有哪些优势)

大家好,如果您还对在线crm系统不太了解,没有关系,今天就由本站为大家分享在线crm系统的知识,包括在线CRM系统有哪些优势的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录在线CRM系统有哪些优势好用的CRM系统有

2025年11月7日 21:30

开发oa系统(OA系统开发流程)

开发oa系统(OA系统开发流程)

各位老铁们好,相信很多人对开发oa系统都不是特别的了解,因此呢,今天就来为大家分享下关于开发oa系统以及OA系统开发流程的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录OA系统开发流程OA系统的设计与实现哪里有o

2025年11月5日 16:00

什么是crm系统(crm管理系统是什么)

什么是crm系统(crm管理系统是什么)

“什么是crm系统”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看什么是crm系统(crm管理系统是什么)!本文目录crm管理系统是什么CRM系统到底是什么意思,作用是什么呢crm 是什么,怎样学会使用什么是crm管理系统c

2025年11月4日 11:30

360小游戏大全游戏(我下载单机小游戏后桌面多了3个图标,删不掉,重做系统也去不掉,请问该怎么解决)

360小游戏大全游戏(我下载单机小游戏后桌面多了3个图标,删不掉,重做系统也去不掉,请问该怎么解决)

本篇文章给大家谈谈360小游戏大全游戏,以及我下载单机小游戏后桌面多了3个图标,删不掉,重做系统也去不掉,请问该怎么解决对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,

2025年11月3日 17:00

更多文章:


国际iq智商测试(国际标准的智商测试题)

国际iq智商测试(国际标准的智商测试题)

本篇文章给大家谈谈国际iq智商测试,以及国际标准的智商测试题对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录国际标准的智商测试题国际智商标准

2025年5月13日 01:10

全国各地卫视直播app(全国各地卫视直播广播直播)

全国各地卫视直播app(全国各地卫视直播广播直播)

全国各地卫视直播广播直播全国各地卫视直播app与广播直播概览随着互联网技术的飞速发展,人们获取信息与娱乐的方式日益多样化。其中,全国各地卫视直播app和广播直播成为了大众喜爱的媒介之一。本文将分别从多个方面对这两大主题进行详细介绍,并辅以实

2025年4月14日 18:12

十大游戏手机排行榜(2022十大最火的沙盒手机游戏排行榜推荐 沙盒手游分享)

十大游戏手机排行榜(2022十大最火的沙盒手机游戏排行榜推荐 沙盒手游分享)

“十大游戏手机排行榜”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看十大游戏手机排行榜(2022十大最火的沙盒手机游戏排行榜推荐 沙盒手游分享)!本文目录2022十大最火的沙盒手机游戏排行榜推荐 沙盒手游分享2022最好玩的

2026年7月22日 10:10

华容道游戏经典手机版(Android小游戏 之《数字华容道》)

华容道游戏经典手机版(Android小游戏 之《数字华容道》)

大家好,如果您还对华容道游戏经典手机版不太了解,没有关系,今天就由本站为大家分享华容道游戏经典手机版的知识,包括Android小游戏 之《数字华容道》的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录Android小

2026年3月31日 19:15

visio2010简体中文版下载(如何破解激活visio 2010)

visio2010简体中文版下载(如何破解激活visio 2010)

大家好,如果您还对visio2010简体中文版下载不太了解,没有关系,今天就由本站为大家分享visio2010简体中文版下载的知识,包括如何破解激活visio 2010的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目

2025年7月2日 03:30

如何去洛阳求轩辕剑外传汉之云地图?轩辕剑5汉之云的所有地图,包括世界地图

如何去洛阳求轩辕剑外传汉之云地图?轩辕剑5汉之云的所有地图,包括世界地图

“汉之云地图”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看如何去洛阳求轩辕剑外传汉之云地图?轩辕剑5汉之云的所有地图,包括世界地图!本文目录如何去洛阳求轩辕剑外传汉之云地图轩辕剑5汉之云的所有地图,包括世界地图轩辕剑汉之云

2025年6月23日 00:10

一天赚5000元的捕鱼游戏(淘金捕鱼红包版真的能赚钱吗)

一天赚5000元的捕鱼游戏(淘金捕鱼红包版真的能赚钱吗)

今天给各位分享淘金捕鱼红包版真的能赚钱吗的知识,其中也会对淘金捕鱼红包版真的能赚钱吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录淘金捕鱼红包版真的能赚钱吗一天赚五千元的游戏有哪些乐鸿捕鱼可以赚钱吗一天赚50

2025年10月16日 13:45

宜搜小说旧版本免费(小说免费观看的软件)

宜搜小说旧版本免费(小说免费观看的软件)

今天给各位分享小说免费观看的软件的知识,其中也会对小说免费观看的软件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录小说免费观看的软件哪些软件可以免费看小说为啥在宜搜看小说要钱哪款软件能看所有小说都免费小说免费

2026年9月30日 17:00

可以免费无限充值的游戏(剑与轮回(免费无限刷充值)同类型游戏有哪些)

可以免费无限充值的游戏(剑与轮回(免费无限刷充值)同类型游戏有哪些)

“可以免费无限充值的游戏”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看可以免费无限充值的游戏(剑与轮回(免费无限刷充值)同类型游戏有哪些)!本文目录剑与轮回(免费无限刷充值)同类型游戏有哪些类似神曲世界(GM无限余额直充)

2025年12月27日 02:00

玩不腻的游戏(好玩不腻的手机游戏)

玩不腻的游戏(好玩不腻的手机游戏)

其实玩不腻的游戏的问题并不复杂,但是又很多的朋友都不太了解好玩不腻的手机游戏,因此呢,今天小编就来为大家分享玩不腻的游戏的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录好玩不腻的手机游戏什么类型的游戏玩着不腻玩不

2026年9月27日 12:40

怎样查飞机实时航班动态(如何查询东方航空航班动态)

怎样查飞机实时航班动态(如何查询东方航空航班动态)

“怎样查飞机实时航班动态”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看怎样查飞机实时航班动态(如何查询东方航空航班动态)!本文目录如何查询东方航空航班动态如何查询航班是否到达怎么查航班实时动态怎么查询航班动态如何查询飞机航

2025年11月12日 17:30

psp游戏下载官网(PSP游戏下载网址!)

psp游戏下载官网(PSP游戏下载网址!)

其实psp游戏下载官网的问题并不复杂,但是又很多的朋友都不太了解PSP游戏下载网址!,因此呢,今天小编就来为大家分享psp游戏下载官网的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录PSP游戏下载网址!索尼PSP

2025年11月8日 08:45

2019旧版本下载(学习强国更新后“订阅”功能失效,怎么办)

2019旧版本下载(学习强国更新后“订阅”功能失效,怎么办)

大家好,今天小编来为大家解答以下的问题,关于2019旧版本下载,学习强国更新后“订阅”功能失效,怎么办这个很多人还不知道,现在让我们一起来看看吧!本文目录学习强国更新后“订阅”功能失效,怎么办wps怎么变成旧版本的界面啊怎样下载233乐园2

2026年10月8日 05:20

三国英雄传8(三国英雄传8秘籍我输入了怎么没用 在线等 求高手啊!!!)

三国英雄传8(三国英雄传8秘籍我输入了怎么没用 在线等 求高手啊!!!)

各位老铁们,大家好,今天由我来为大家分享三国英雄传8,以及三国英雄传8秘籍我输入了怎么没用 在线等 求高手啊!!!的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开

2025年6月19日 00:40

dnf天空套怎么合成(DNF天空套怎么合成)

dnf天空套怎么合成(DNF天空套怎么合成)

“dnf天空套怎么合成”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看dnf天空套怎么合成(DNF天空套怎么合成)!本文目录DNF天空套怎么合成dnf怎么合天空套最省钱怎么合透明的天空套dnf神器天空怎么合成DNF克隆天空套

2025年9月1日 00:45

迅雷app官网下载,迅雷app官网下载安装免费

迅雷app官网下载,迅雷app官网下载安装免费

迅雷app官网下载安装免费文章主题:迅雷app官网下载及安装免费教程文章简介:本文将详细介绍如何在迅雷app官网进行下载及安装,同时强调迅雷app的免费下载与安装流程。我们将通过清晰的步骤和适当的例子,帮助读者轻松完成迅雷app的下载与安装

2025年5月16日 20:52

美女找茬在哪里(qq美女找茬的所有级别对应)

美女找茬在哪里(qq美女找茬的所有级别对应)

各位老铁们好,相信很多人对美女找茬在哪里都不是特别的了解,因此呢,今天就来为大家分享下关于美女找茬在哪里以及qq美女找茬的所有级别对应的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录qq美女找茬的所有级别对应QQ

2026年4月27日 21:15

惠众分享怎么快速赚钱?国商惠众打电话来说要拖我的车我怎么办

惠众分享怎么快速赚钱?国商惠众打电话来说要拖我的车我怎么办

大家好,今天小编来为大家解答以下的问题,关于惠众,惠众分享怎么快速赚钱这个很多人还不知道,现在让我们一起来看看吧!本文目录惠众分享怎么快速赚钱国商惠众打电话来说要拖我的车我怎么办嘉时惠众润滑油怎么样惠众app是干什么的惠众分享怎么快速赚钱转

2025年6月20日 17:00

eclipse中文版(如何汉化eclipse)

eclipse中文版(如何汉化eclipse)

各位老铁们,大家好,今天由我来为大家分享eclipse中文版,以及如何汉化eclipse的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录如何汉化ec

2026年8月28日 11:40

勇士对巴特勒比赛(圣诞节大战赛程出炉,哪场比赛你最想看)

勇士对巴特勒比赛(圣诞节大战赛程出炉,哪场比赛你最想看)

今天给各位分享圣诞节大战赛程出炉,哪场比赛你最想看的知识,其中也会对圣诞节大战赛程出炉,哪场比赛你最想看进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录圣诞节大战赛程出炉,哪场比赛你最想看勇士142分创纪录复仇

2026年9月9日 17:40

近期文章

本站热文

如何关闭端口(如何关闭端口)
2025-05-21 13:30:02 浏览:226
标签列表

热门搜索