移动IM开发学习<1>

本文深入探讨了IM通讯方式的选择,包括P2P与服务器中转的区别,网络连接方式的对比(基于TCP与HTTP),以及IM协议的选择原则与常见协议的优缺点分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.通讯方式

IM通讯方式有两种选择:设备直连(P2P)和通过服务器中转。

1.P2P

P2P多见于局域网内聊天工具,典型的应用有:飞鸽传书,天网Maze等。这类软件在启动后一般做两件事情:

  1. 进行UDP广播:发送自己信息和接受同局域网内其他端信息
  2. 开启TCP监听:等待其他端进行连接

这种方式在有种种限制和不便:一方面它只适合在线的点对点消息传输,而对离线,群组等业务支持不够。另一方面由于 NAT(网络地址转换) 的存在,使得不同局域网内机器互联的难度大大上升,在某些网络类型(对称NAT)下无法建立连接。

2.服务器中转

几乎所有互联网IM产品都采用服务器中转这种方式进行消息传输,相对于P2P的方式,它有如下的优点:

  • 能够支持更多P2P无法支持或支持不好的业务,如离线消息,群组,聊天室服务
  • 方便业务逻辑的拓展和新旧版本的兼容

当然它也有自己的问题:服务器架构复杂,并发要求高。

二.网络连接方式

IM主流网络连接方式有两种:

  • 基于TCP的长连接
  • 基于HTTP短连接PULL的方式

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

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

三.协议选择

IM协议选择原则一般是:易于拓展,方便覆盖各种业务逻辑,同时又比较节约流量。后一点的需求在移动端IM上尤其重要。

常见的协议有:

  • XMPP
  • SIP
  • MQTT
  • 私有协议

XMPP协议的优点在于:协议开源,可拓展性强,在各个端(包括服务器)有各种语言的实现,开发者接入方便。但是缺点也是不少:XML表现力弱,有太多冗余信息,流量大,实际使用时有大量天坑。

SIP协议多用于VOIP相关的模块,是一种文本协议,由于我并没有实际用过,所以不做评论,但从它是文本协议这一点几乎可以断定它的流量不会小。

MQTT的优点是协议简单,流量少,但是它并不是一个专门为IM设计的协议,多使用于推送。

而市面上几乎所有主流IM APP都是是使用私有协议,一个被良好设计的私有协议一般有如下优点:高效,节约流量(一般使用二进制协议),安全性高,难以破解。缺点则是在开发初期没有现有样列可以参考,对于设计者的要求比较高。

一个好的协议需要满足如下条件:高效,简洁,可读性好,节约流量,易于拓展,同时又能够匹配当前团队的技术堆栈。基于如上原则,我们可以推出: 如果团队小,团队技术在IM上积累不够可以考虑使用XMPP或者MQTT+HTTP短连接的实现。反之可以考虑自己设计和实现私有协议。

上面就是一个IM系统大致的选型过程:通讯方式,连接方式,协议选择,协议设计。

内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用技术四大架构的内容关系,明确了企业架构设计的重要性。接着,阐述了新版企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级专业级价值流,细化业务能力、流程对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、一致高效使用。应用架构方面,提出了分层解耦服务化的设计原则,以提高灵活性响应速度。最后,技术架构部分围绕技术框架、组件、平台部署节点进行了详细设计,确保技术架构的稳定性扩展性。 适合人群:适用于具有一定企业架构设计经验的IT架构师、项目经理业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理应用开发,确保数据的一致性应用的高效性;③为技术选型系统部署提供科学依据,确保技术架构的稳定性扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解实践,重点关注各架构模块之间的关联协同,以便更好地应用于实际工作中。
资 源 简 介 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。本文简要的阐述了ICA的发展、应用现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系, 详 情 说 明 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。 本文简要的阐述了ICA的发展、应用现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系,在此基础上重点分析了一种快速ICA实现算法一FastICA。物质的非线性荧光谱信号可以看成是由多个相互独立的源信号组合成的混合信号,而这些独立的源信号可以看成是光谱的特征信号。为了更好的了解光谱信号的特征,本文利用独立分量分析的思想方法,提出了利用FastICA算法提取光谱信号的特征的方案,并进行了详细的仿真实验。 此外,我们还进行了进一步的研究,探索了其他可能的ICA应用领域,如音乐信号处理、图像处理以及金融数据分析等。通过在这些领域中的实验应用,我们发现ICA在提取信号特征、降噪信号分离等方面具有广泛的潜力应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值