`
thoughtbear
  • 浏览: 3488 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

XMPP协议中的Resource(同帐号多处登录依据)

    博客分类:
  • XMPP
阅读更多

      XMPP协议支持同一帐号在多处登录,并且支持对不同登录进行区分,这种区分通过绑定resourcepart实现。

 

      XMPP协议中用户帐号格式为<localpart@domainpart>,如<juliet@im.example.com>,类似于EMail地址,其中domainpart是服务器域名,localpart为帐号ID,所以,Client通过domainpart即可唯一的确定Server,而Server通过localpart可以唯一的确定Clinet所登录的帐号(并不是唯一的确定Client,因为XMPP支持一个帐号在多处同时登录)。

 

     那么,如何唯一的确定Client而不是Client对应帐号呢?XMPP协议中引入了resourcepart,当Client连接Server成功后,Client会绑定一个唯一的resourcepart,表示为<localpart@domainpart/resourcepart>。如此,服务器就可以唯一的定位到任意一个Client了。使用Openfire为服务器,会发现有个有趣的现象:帐号A在Client1和Client2上同时登录,由帐号B发送给帐号A消息,Client1和Client2会同时收到此消息,用Client1回复消息,B再发送消息给A,就只有Client1能收到了,再用Client2发送消息给B,B回复后,只有Client2能收到,Client1收不到。有了resourcepart之后,这一切变得很简单,也很容易理解。

 

     Resourcepart的生成有两种方式:1.Server收到Client的请求后生成;2.Client直接将resourcepart发送至Server。

 

     至于服务器是否一定要支持多用户同时登录,可根据实际需求确定,XMPP协议只是提供了一种支持,并不一定非这么做。如要禁止同帐号多处同时登录,可以在Client2认证请求的时候发送拒绝消息,或在close掉Client1的session。

 

     由于历史原因,XMPP之前叫Jabber,所以XMPP的帐号ID也被称为JabberID,简称JID。我们称<localpart@domainpart>为"bare JID"(裸JID),而称<localpart@domainpart/resourcepart>为"full JID"。

 

 

0
3
分享到:
评论

相关推荐

    XMPP协议中文参考指南

    在 XMPP 协议中,出席信息服务可以从即时消息服务中分离,例如,可以提供一个出席信息服务、一个即时消息服务或同时提供两者。XMPP 协议也提供了把出席信息服务和即时消息服务分离成为独立服务的可能性。 XMPP ...

    XMPP协议中文帮助文档

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,被广泛应用于即时通讯、在线状态管理和数据交换等领域。这份"XMPP协议中文帮助文档"无疑为那些需要理解和应用XMPP技术的开发者...

    XMPP协议中文版

    XMPP协议的核心功能被定义在RFC3920和RFC3921中,分别涉及核心协议和即时消息与出席协议(XMPP-IM)。 通用架构章节阐述了XMPP协议所采用的客户-服务器模型,该模型允许任意两个网络终端通过TCP连接实现结构化信息...

    XMPP协议(可扩展消息出席协议):核心.doc

    这种机制使得同一个用户能够在多个设备上同时登录并保持独立的会话。 #### 七、服务器回拨 服务器回拨机制允许服务器在客户端断开连接时主动发起重连,确保服务的连续性和可用性。 #### 八、XML节 XML节是指XML...

    xmpp协议相关的jar和中文文档

    XMPP(Extensible Messaging and Presence Protocol)是一种开放的即时通讯协议,主要用于构建实时通信系统,如聊天应用、社交网络和协作工具。它基于XML(可扩展标记语言)设计,允许开发者构建灵活、可扩展的通信...

    XMPP.rar_xmpp _通讯协议中文

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放通信协议,主要用于实时通信和存在信息的交换。这个“XMPP.rar_xmpp 通讯协议中文”压缩包包含了一个名为“XMPP.doc”的文档,很可能是关于...

    xmpp协议详解

    XMPP(可扩展消息和出席协议)是一种基于XML的实时通信协议,最初由Jabber开源社区开发,后来成为IETF即时消息和出席技术的标准。该协议主要用于构建即时消息和在线状态服务,同时也支持数据的交换和其他请求-响应...

    xmpp协议(中文翻译版)

    XMPP(Extensible Messaging and Presence Protocol,可扩展消息与存在协议)是一种基于XML的实时通信协议,用于构建即时通讯和在线状态服务。该协议最初由Jabber项目开发,后来被互联网工程任务组(IETF)标准化,...

    XMPP协议 C#实例

    在本文中,我们将深入探讨如何使用C#语言实现XMPP协议,并通过一个名为"ConsoleXmpp"的示例项目进行实战演练。这个实例是专为Visual Studio 2010设计的,它能确保在Openfire服务器上实现可靠的通信。 首先,理解...

    xmpp协议介绍,XMPP体系架构

    XMPP(可扩展消息处理现场协议)是一种基于XML的实时通信协议,最初源自开源项目Jabber。它的设计目的是用于即时消息(IM)服务和在线状态检测。XMPP的核心概念是构建在TCP/IP协议之上的XML流,使得数据在客户端和...

    XMPP协议工具openfire_3_10_3

    **XMPP协议详解** XMPP(Extensible Messaging and Presence Protocol,可扩展消息与存在协议)是一种基于XML的开放标准通信协议,主要用于实时双向通信,如即时消息(IM)、语音及视频通话、文件传输等。该协议...

    XMPP协议中文版.doc

    本文将深入探讨XMPP协议的核心功能及其在现代通信中的应用和重要性。 XMPP,源于Jabber开源社区,是一个用于构建即时消息和出席信息应用的协议。XMPP协议的设计初衷是实现网络间的实时通信,同时保证信息的结构化和...

    XMPP协议详解

    XMPP(可扩展消息和出席信息协议)是一种基于XML的实时通信协议,旨在提供即时消息、出席信息(在线状态)以及请求-响应服务。它的设计初衷是为了满足RFC 2779中对即时通信和出席信息的需求。XMPP最初由Jabber开源...

    类似QQ的xmpp协议聊天

    XMPP的核心是Jabber协议,通过TCP/IP连接进行数据传输,支持一对一、一对多以及多对多的聊天模式,具备丰富的扩展性,可以满足多种应用场景,如即时消息、文件传输、群聊等。 **Android平台上的XMPP应用开发** 在...

    XMPP协议的IM客户端IMPanda

    描述中提到,默认已经注册了一个GTalk帐号用于测试,用户可以使用自己的GMail账号直接登录IMPanda进行尝试。 在提供的文件列表中,我们可以看到以下组件: 1. `libeay32.dll`:这是OpenSSL库的一部分,用于实现...

    基于xmpp协议的多端即时通讯方案

    ### 基于XMPP协议的多端即时通讯方案 #### 一、开发背景 ##### 1、国际背景 随着互联网技术的飞速发展,即时通信已成为人们日常沟通的重要方式之一。1996年,Mirabilis公司推出的世界首个即时通信系统ICQ,标志着...

    xmpp协议demo

    让我们深入探讨XMPP协议以及这个项目中的关键组成部分。 1. **XMPP协议**:XMPP最初设计用于即时通讯,但现在也被广泛应用于多用户聊天、协同工作、物联网设备通信等多个领域。它基于TCP/IP连接,通过XML流传输数据...

    xmpp协议和xmpp扩展协议

    xmpp协议和xmpp扩展协议,chm格式

    XMPP_协议介绍

    XMPP_协议介绍,手机客户端需要实现即时通信功能,在通信协议上采用开放的Jabber(XMPP)协议,整个XMPP协议最为核心也是最为复杂的部分是Subscription的运行机制,抓取了一下相关的通信协议报文,供开发时候参考。

Global site tag (gtag.js) - Google Analytics