即时通讯(IM)面试题

原创 2016年06月02日 11:58:12

XMPP的实现原理

有没有做过即时通讯?是否使用过XMPP,讲述一下XMPP的实现原理
  • XMPP是一个即时通讯的协议,它规范了用于即时通信在网络上数据传输格式的,比如登录,获取好友列表等等的格式,XMPP在网络传输的数据是XML格式
    比如登录:把用户名和密码放在xml的标签中,传输到服务器

    • XMPP是一个基于Socket通过的网络协议,目的就是为了保护长连接,以实现即时通讯功能

    • XMPP的客户端是使用一个XMPPFramework框架实现

    • XMPP的服务器是使用Openfire,一个开源的服务器

客户端获取到服务器发送过来的好友消息,客户端需要对XML进行解析,使用的解析框架的KissXML框架,而不是NSXMLParser/GDataXML。


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

1.发送附件(图片,语言,文档等等)时比较麻烦

2.XMPP框架没有提供发送附件的功能,需要自己实现(但是环信已经把这些功能集成进去了)
实现方法,把文件上传到文件服务器,上传成功后获取文件保存路径,再把附件的路径发送给好友

  • 更为直观形象的表达:
用XMPPFramework发送图片,语音,文档的时候不能直接发送到Openfire服务器,先把文件保存到文件服务器中,然后文件服务器会返回一个以图片,语音等的路径,之后就把这个路径放到xml的消息体里面。

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

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

Androi开发中的给予XMPP和第三方的即时通讯(面试简述)

Androi开发中的给予XMPP和第三方的即时通讯(面试简述)
  • zh773615704
  • zh773615704
  • 2016年10月21日 19:31
  • 720

人事面试题目总结

人事面试题目总结 1、请你自我介绍一下你自己? 3 2、你觉得你个性上最大的优点是什么? 3 3、说说你最大的缺点? 3 4、你对加班的看法? 3 5、你对薪资的要求? 3 6、在五年的时间内,你的职...
  • qq_23994787
  • qq_23994787
  • 2017年09月12日 09:49
  • 406

openfire常见问题解决

1.新手在部署openfire源码第一次运行时,大多都会碰到如下异常: Failed to load admin-sidebar.xml file from Openfire classes -...
  • qing101hua
  • qing101hua
  • 2015年03月31日 02:31
  • 762

iOS开发之即时通讯之Socket(AsyncSocket)

第一次接触,简单学习一下装载的文章 1、AsyncSocket介绍 如果需要在项目中像QQ微信一样做到即时通讯,必须使用socket通讯。 iOS中Socket编程的方式: BSD Socket: ...
  • u013448894
  • u013448894
  • 2016年06月21日 15:40
  • 1897

2016年最新iOS面试题精选总结 --- 项目问题(六)

iOS面试项目问题答案
  • JackMengJin
  • JackMengJin
  • 2016年09月02日 08:32
  • 6296

iOS:即时通讯之<掌握篇 环信>

什么是环信? 1.环信是一个第三平台,提供即时通信(IM–Instant Messaging )的服务 2.环信是在XMPP的基础上进行二次开发 3.环信在网络上传输的数据也是XML 4.使用...
  • qq_30513483
  • qq_30513483
  • 2016年04月08日 17:57
  • 3738

iOS开发常见知识点、注意点以及面试常见问题

多线程网络1.多线程的底层实现? 1> 首先搞清楚什么是线程、什么是多线程 2> Mach是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制是基于Mach的线程 3> 开发中很少用Ma...
  • u012592258
  • u012592258
  • 2015年12月08日 16:41
  • 1444

iOS面试题

目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡。...
  • u012701023
  • u012701023
  • 2016年03月23日 22:06
  • 1133

Android中开发IM即时通讯功能的方案

最近准备做IM功能,在技术预研当中,其实可行方案还是比较多的,就看怎么选了 1.第三方平台 比如环信,融云,leancloud,容联云等等。直接使用sdk就可以实现了,最简单最直接,而且稳定性已经不错...
  • PK0071
  • PK0071
  • 2016年08月03日 17:37
  • 7031

一个海量在线用户即时通讯系统(IM)的完整设计

一篇完整(经过实践检验)的IM系统服务器端设计,后续会持续更新版本。
  • fy_401
  • fy_401
  • 2017年04月28日 15:44
  • 2609
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:即时通讯(IM)面试题
举报原因:
原因补充:

(最多只允许输入30个字)