zoukankan      html  css  js  c++  java
  • 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定义的文档格式实现了信息通信,代码没有太多的可参考性。

  • 相关阅读:
    Jerry入职SAP成都研究院14周年纪念日
    深入学习SAP UI5框架代码系列之七:控件数据绑定的三种模式
    深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理
    让电影票房飞一会儿,五一换个姿势重温经典
    云图说|ModelArts Pro,为企业级AI应用打造的专业开发套件
    抵制羊毛党,图计算“加持”互联网电商风控
    Faiss源码剖析:类结构分析
    一文带你了解华为云GaussDB的五大黑科技
    华为云云原生数据库GaussDB加速创新,企业核心数据上云信赖之选
    云图说|华为数据安全中心,助你保障云上数据安全!
  • 原文地址:https://www.cnblogs.com/ZetaChow/p/2353033.html
Copyright © 2011-2022 走看看