选取了主流的四种即时消息协议作为预研对象,分别描述了这四种消息技术的原理、适用场景以及限制。 XMPP XMPP(The Extensible Messaging and Presence Protocol,可扩展的消息通讯与呈现协议),前身是开源即时消息协议 Jabber,现在已经被 IETF 标准化(RFC 392 ..

即时消息协议预研

本贴最后更新于 2506 天前,其中的信息可能已经东海扬尘

选取了主流的四种即时消息协议作为预研对象,分别描述了这四种消息技术的原理、适用场景以及限制。

 

XMPP

XMPP(The Extensible Messaging and Presence Protocol,可扩展的消息通讯与呈现协议),前身是开源即时消息协议 Jabber,现在已经被 IETF 标准化(RFC 3920)。

应用非常广泛,可选择的实现很多,Openfire 是目前比较成熟的。

XMPP

 

SIMPLE

SIMPLE(SIP for Instant Messaging and Presence Leveraging Extensions,基于 SIP 的即时消息与呈现扩展),IBM/微软主推的即时消息协议,虽然 Java 有相关 JSRs(164、165)定义了接口,但没有找到适合的实现。

SIMPLE

各实体功能如下:

IRC

IRC(Internet Relay Chat,互联网中继聊天协议),以服务器中转为原理进行消息转发,机制成熟稳定,应用广泛,可选择的实现较多。

IRC

A作为客户端连接到了服务器 S1 的 ChannelX 频道,B 作为客户端连接到了服务器 S2 的 ChannelX 频道,此时 A 发消息后通过 S1 转发给 S2,然后 S2 有把消息发送给了 B。

其中频道是一个广播组,用户可以进入频道,也可以离开频道。当一个用户在频道里发消息时,频道里的其他所有用户都能够收到该消息。当第一个用户进入频道,频道被创建,当最后一个用户离开此频道时,频道被销毁。

在 IRC 服务器网络中,频道由这些服务器共同维护,频道相当于一条通信管道,将所有开通此项频道的服务器贯穿起来,消息在这个管道中流通。

PSYC

PSYC(Protocol for SYnchronous Conferencing,同步会话协议),设计用来取代 IRC,兼容 IRC/XMPP 客户端,据称其可以无限扩容,弥补 IRC/XMPP 中使用 s2s 后服务器网络拓扑膨胀时性能急剧下降的缺陷。

比较新,应用较少,可选择的实现较少。http://about.psyc.eu/Comparison

结论

可选择 XMPP 作为即时消息底层支持协议,Openfire 作为实现。

在单机 Openfire 不能满足用户数时可考虑使用 Openfire Connection Manager 模块增加客户端连接数;配置 Openfire 集群增加整体容量。

 

  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 20 关注
  • SIMPLE
    1 引用 • 5 回帖
  • SIP
    1 引用 • 5 回帖
  • PSYC
    1 引用 • 5 回帖
  • IRC
    3 引用 • 15 回帖
  • XMPP
    3 引用 • 5 回帖
  • IM
    7 引用 • 15 回帖
5 回帖
请输入回帖内容...
  • An

    期待 D 开发个 gtalk group

  • 88250

    @Ansen 我发现 Q 消息提醒好像不稳定。。。。

  • An

    @88250 肯定不稳定,你发的这条消息都没有提示;换成邮箱吧。。。

  • 88250

    @Ansen 这条我收到了,看来不稳定。

  • sumory API

    你有开发 IM 的经验吗?