• XMPP开发


    XMPP,即时通信协议。

    具体相关资料可以在各大搜索引擎找到。

    本文仅做概述

    XMPP出现的原因是目前IM已经成为主要的互联网应用,因此就出现了一个问题,各大运营商不互通,各自的IM有各自的架构和方式。

    另一个重要的互联网应用Email,通过遵从SMTP和POP协议,让各大服务提供商互通邮件。

    为了让IM软件像Email一样,实现服务商互通,于是又一帮人做出了一个标准化的即时通信协议XMPP,即时通信仅是XMPP协议实现的功能之一。

    遵从XMPP协议搭建的即时通信平台就像是Email一样,任何人都可以搭建自己的IM服务器,目前有很多开源的服务器端,类似搭建Email服务器的软件一样,当搭建好以后,任何遵从XMPP的客户端都可以连接到这样的IM服务端,与任何这样的服务提供上内的用户进行即时通信。

    根据以上描述,很明显,这非常的类似Email的概念,只是他是即时通信的。

    最早提出这个方案并且实现是的Jabber,因此很多人也把XMPP协议称为Jabber协议,目前运用这一技术最典型的服务商是Google的Gtalk。

    在互联网上搜索Jabber或XMPP协议可以找到大量资料,因为他是开源的。一下就具体说说实现方式。

    其实并不神秘,计算机通信依然是最基础的Socket,本人采用的是Openfire服务端(一个免费开源的XMPP服务端程序),工作原理了解之后并不需要花费大量的精力去开发服务端,可以用现成,就像不会有人去开发Email服务端一样,作为开发人员来说,可能更关注客户端,因为客户端的实现有更大的灵活空间。

    XMPP是一个协议,他才用XML文档方式实现,只是约定这个XML如何写,代表什么意思。

    服务器和客户端通信用这种约定的文档格式发送消息,以便于互相能够理解,并且不同的服务提供者互相理解,简单点说就是约定好一种同样的表达方式而已,至于真正的数据传输方式依然是Socket发送字节流,只是这些字节流是XMPP定义的文档字符串转换过来的。

    客户端与服务器端的一次对话是一个完成的XML文档

    <stream……> 

    …………

    …………

    </stream>

    当客户端发送一个<stream……>的数据过去表示连接,这时候服务端也会回发一段类似的文本过来(具体请查阅XMPP协议相关内容)

    然后建立好连接,客户端和服务端就会互相发送各种各样的节来进行通话,例如发送<message……>……</message>节是发送消息,发送<iq……>……</iq>是执行查询列表,登录验证等其他功能,还有一个<presence……>……<presence/>是报告状态等。这些节,配合相应的属性,From、To、type、xmlns等就可以组合成即时通信所会遇到的所有对话或通知情况。

    所以,XMPP实际上就是有这么定义通信格式的一个规定,大家按照这格式来理解和告知别的服务提供者,如果大家都遵照这样的约定,也就实现了即时通信的互联互通。

    本人虽然用了开源的服务端,在客户端部分没有用任何开源的接口,用的是最基础的Socket方式,自己按照XMPP的约定格式组合XML字符串。

    代码示例将在以后推出,目前只是用Socket发送XMPP定义的文档格式实现了信息通信,代码没有太多的可参考性。

  • 相关阅读:
    LeetCode 1110. Delete Nodes And Return Forest
    LeetCode 473. Matchsticks to Square
    LeetCode 886. Possible Bipartition
    LeetCode 737. Sentence Similarity II
    LeetCode 734. Sentence Similarity
    LeetCode 491. Increasing Subsequences
    LeetCode 1020. Number of Enclaves
    LeetCode 531. Lonely Pixel I
    LeetCode 1091. Shortest Path in Binary Matrix
    LeetCode 590. N-ary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/ZetaChow/p/2353033.html
Copyright © 2020-2023  润新知