iOS即时通讯 – IM(即时通讯)

iOS即时通讯 – IM(即时通讯)

XMPP是什么

  • XMPP:The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议)
  • XMPP是一种基于XMl的即时通讯协议
  • XMPP的官方文档是RFC 3920 这个文档定义了登录,退出,获取好友,发送消息等等的XML数据源传输协议
  • XMPP是一个典型的C/S框架* 基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XM流
  • XMPP是一种类似于HTTP协议的一种数据传输协议,其过程就如同“解包装-> 包装”的过程。只需要理解其接收的类型及返回的类型,便可以很好地利用XMPP来进行数据通讯
  • XMPP官方网站-http://xmpp.org

XMPP实现即时通讯的准备工作

  • 下载Openfire服务器
  • 下载XMPPFramework框架

是否使用过XMPP,XMPP的实现原理

  • XMPP是一个即时通讯协议,它定义好用于即时通信在网络上数据传输格式的,比如登录,获取好友列表等等的格式。XMPP在网络传输的数据是XML格式
  • 比如登录:把用户名和密码放在xml的标签中,传输到服务器
  • XMPP是一个基于Socket通过的网络协议,目的是为了保存长连接,以实现即时通讯功能
  • XMPP的客户端是使用一个XMPPFramework的框架
  • XMPP的服务器是使用Openfire,一个开源的服务器 假设客户端获取到服务发送过来的还有消息,客户端需要对XML进行解析,使用的解析框架的KissXML框架

在使用XMPP的时候有没有遇到什么苦难

  • 发送附件(图片,语音,文档…)时比较麻烦
  • XMPP框架没有提供附件传送的功能,需要自己实现
  • 实现方法,把文件上传到文件服务器,上传成功后获取文件保存路径,在把附件的路径发送给好友

是否使用过换新,简单的说下环信的实现原理

  • 环信一个即时通信的服务提供商
  • 环信使用的是XMPP的一些,它是在XMPP的基础上进行二次开发,对服* 务器Openfire和客户端进行功能模型的添加和客户端SDK的封装,环信的本质还是使用XMPP,基于Socket的网络通信
  • 环信内部实现了数据缓存,会把聊天记录添加到数据库,把附件下载到本地,程序员更多时间花到界面用户体验上
  • 环信内部已经实现了视频,音频,图片,其他附件发送功能。
  • 环信使用公司可以节约时间成本
  • 不需要公司内部搭建服务器
  • 客户端的开发,使用环信SDK比使用XMPPFramework更简洁方便

(有一句话叫做三人行必有我师,其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群656315826,不管你是小白还是大牛欢迎入驻,正在求职的也可以加入,大家一起交流学习,话糙理不糙,互相学习,共同进步,一起加油吧。)

以下网盘内的资料都可以找我免费获取,希望可以帮助到大家

网盘资料

转载于:https://my.oschina.net/u/3874462/blog/1824844

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101621.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Linux获取uuid_查看uuid的命令

    Linux获取uuid_查看uuid的命令一、UUID生成(源代码编译)根据定义,UUID(UniversallyUniqueIDentifier,也称GUID)在时间和空间都是唯一的。为保证空间的唯一性,每个UUID使用了一个48位的值来记录,一般是计算机的网卡地址。为保证时间上的唯一性,每个UUID具有一个60位的时间戳(timestamp)。这个时间戳表示自公元1582年(绝对不是1852,这是《COM技术内幕》,1999年3月第1版第89页中的一个错误)10月15号00:00:00:00以来的时间,是以100纳秒为单位的时间间隔

  • Codeforces 459E Pashmak and Graph(dp+贪婪)

    Codeforces 459E Pashmak and Graph(dp+贪婪)

  • 消息钩子的反拦截

    消息钩子的反拦截首先声明一下,标题所指的钩子是消息钩子,而不是API钩子(一种对API地址的替换技术)。若标题使您误解,请不要继续阅读。      消息钩子在Windows编程中有着非常广泛的应用,它可以任意拦截Windows系统,这个以消息为驱动的系统中的绝大多数消息类型。一方面这给编程者带来了巨大的灵活性,另一方面也埋下了巨大隐患,大多数窃密软件都使用这种方法。此篇文章给您提供一种钩子的反拦截方

  • 如何用正则表达式匹配汉字

    如何用正则表达式匹配汉字[\u4E00-\u9FA5\\s]+ 多个汉字,包括空格[\u4E00-\u9FA5]+ 多个汉字,不包括空格[\u4E00-\u9FA5]一个汉字

  • 数据仓库ETL开发如何进行测试

    数据仓库ETL开发如何进行测试 数据仓库ETL开发如何进行测试?数据仓库ETL开发如何进行测试?由于数据仓库中数据量比较庞大,还有为了安全因素,一般在开发库和测试库数据不完全或者和生成库(正式库)不一致,导致在测试库和开发库中进行代码测试存在一定的问题。我们知道在软件开发过程中有很多测试的方法,按照测试方法可以分为白盒测试和黑盒测试。白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑

  • java中break和continue的用法「建议收藏」

    java中break和continue的用法「建议收藏」**break和continue的用法**break的用法:1.break用于switch语句中,终止switch语句2.break用于循环时,跳出循环3.break用于其他位置,毫无意义1.break用于switch语句中,终止switch语句inta=4;switch(a){case1:…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号