服务器:为XMPP节提供路由,是否支持server-Server通信也是很重要的特性,常见的服务有openfire,tigase,m-link等web
客户端:通常为人类驱动的实体,也能够是自动化的机器人实体(聊天机器人)跨域
组件:XMPP扩展(XEP-0114)使用该扩展协议能够实现服务实现无关的扩展,组件做为服务器内部可单独寻址的实体浏览器
插件:特定服务实现下的扩展,不大可能会移植服务器
JID:格式 节点@域/资源 网络
XMPP通信是以XML为基础,研究XMPP协议的话必需要了解他的一些基础元素和属性工具
xmpp流由两份xml组成,通信的每一个方向都有一份,根元素为stream:stream学习
子元素为可路由的节点和与流相关的顶级元素,通用元素spa
presence 相关出席信息插件
message 消息server
iq 信息与查询
之前更新数据使用定时刷新,使用AJAX改善了体验,实质上没有变化。咱们可使用长轮询技术(客户端向服务器发送Ajax请求,服务器接到请求后hold住链接,直到有新消息才返回响应信息并关闭链接,客户端处理完响应信息后再向服务器发送新的请求,ie上用iframe,别的浏览器用xhr来实现)达到更实时的更新效果。XMPP中这种技术,被称之为BOSH,其实Comet和反向http也是相似的东西。不少xmpp服务器中内置该功能,也有单独的BOSH链接管理服务BOSH帮助http客户端创建一个新的XMPP会话,而后把XMPP节包装到一个特殊的body元素经过http回传,这样一来http应用程序就能够控制一个真正的xmpp会话,因为长轮询的高效率和低延迟,所以其效果和原生TCP链接差很少。
使用长轮询技术须要使用js进行跨域访问,目前咱们经过Strophe的JS类库实现了轻松优雅的在http下访问xmpp