MQTT vs. XMPP

2018-07-23  本文已影响0人  Shawn_xiaoyu

XMPP 是老牌的即时聊天协议,像 Google Hangouts, WhatsApp Messenger 等即时聊天程序都是基于 XMPP 的。
而 MQTT 是最近几年随着物联网行业的发展,才慢慢进入公众视线的,像 Facebook Messenger App 使用了 MQTT 协议。

MQTT 的特点在于报文小,协议简单,提供了三个 QoS 级别。这几个特性是专门为网络环境复杂的物联网(IoT)场景设计的。

XMPP 特点在于协议和扩展协议成熟,功能完善,专门为即时聊天(IM)场景设计。

两者无法直接比较优劣。就像老虎和狮子其实无法比较真实实力,因为一个踞卧在长白山,一个奔跑在非洲大草原,要较量怎么也得放到同一个战场。但问题是战场选在哪儿都不合适。放在草原是偏袒狮子,放在森林是偏袒老虎,放在动物园却都没了脾气,怎么也打不起来了。

对于这两个协议来说,首先 XMPP 依赖 XML 协议,所以放在 IoT 场景里过重,基本不合适,很少有人用。而另一方面虽然 MQTT 协议本身过于简单,放在实时聊天协议里的话,多数功能是要自己定制协议来实现的,但总归可以用。

按照这个道理,比较就只能放在 IM 领域才有真实意义。
做技术选择一直是程序员和设计者头痛的事情,放在 IM App 设计的初期,大概就归结为两个问题:

为了回答上面的两个问题,我们需要逐一考虑使用 MQTT 实现常见 IM 需求的方式,并分析其优缺点。
(现在很多人的技术选择已经很简单了 -- 什么流行用什么)

性能

对于移动设备上的 IM App 来说,电量损耗是一个需要认真对待的问题,在这方面,固定头部仅仅消耗 2 个字节的 MQTT 协议显然有着巨大优势。当然前提是设计良好的主题格式,消息体格式和长度。
使用 MQTT 搭配合适的二进制格式的消息体,让聊天信息交换和处理非常轻量。

IM 功能

XMPP 在 IM 的各个功能上的定义非常完善,而 MQTT 需要在基础协议之上自行实现。

认证

多设备

状态显示

未完成 2018年07月23日00:54:15

上一篇下一篇

猜你喜欢

热点阅读