`
dreamoftch
  • 浏览: 495581 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XMPP MUC多人聊天相关的一些stanza

阅读更多

 

 

 

 
创建room的stanza:
<presence
    from='crone1@shakespeare.lit/desktop'
    to='coven@chat.shakespeare.lit/firstwitch'>
  <xxmlns='http://jabber.org/protocol/muc'/>
</presence>
 
房间创建成功之后,client收到的stanza:
<presence
    from='coven@chat.shakespeare.lit/firstwitch'
    to='crone1@shakespeare.lit/desktop'>
  <xxmlns='http://jabber.org/protocol/muc#user'>
    <itemaffiliation='owner'
          role='moderator'/>
    <statuscode='110'/>
    <statuscode='201'/>
  </x>
</presence>
 
创建成功之后对房间进行配置的stanza(根据自己需求提交响应的参数,下面的例子是配置room名称和members only):
一个set类型的iq,query里面的x元素的type为submit,然后里面的field为相关的配置项
<iqfrom='crone1@shakespeare.lit/desktop'
    id='create2'
    to='coven@chat.shakespeare.lit'
    type='set'>
  <queryxmlns='http://jabber.org/protocol/muc#owner'>
    <xxmlns='jabber:x:data'type='submit'>
      <fieldvar='FORM_TYPE'>
        <value>http://jabber.org/protocol/muc#roomconfig</value>
      </field>
      <fieldvar='muc#roomconfig_roomname'>
        <value>A Dark Cave</value>
      </field>
      <fieldvar='muc#roomconfig_membersonly'>
        <value>1</value>
      </field>
    </x>
  </query>
</iq>
 
如果配置了room是members only,然后想要往该房间添加允许进入的member,使用下面的stanza:
一个set类型的iq,query里面的item元素表示要添加的member,可以添加多个item,即多个member,指定query的affiliation属性member即可
<iqfrom='crone1@shakespeare.lit/desktop'
    id='member4'
    to='coven@chat.shakespeare.lit'
    type='set'>
  <queryxmlns='http://jabber.org/protocol/muc#admin'>
    <itemaffiliation='none'
          jid='hag66@shakespeare.lit'/>
    <itemaffiliation='member'
          jid='hecate@shakespeare.lit'/>
  </query>
</iq>
 
如果想要禁言有个用户,可以通过下面的stanza(The <reason/> element is OPTIONAL):
<iqfrom='crone1@shakespeare.lit/desktop'
    id='voice2'
    to='coven@chat.shakespeare.lit'
    type='set'>
  <queryxmlns='http://jabber.org/protocol/muc#admin'>
    <itemnick='thirdwitch'
          role='visitor'>
      <reason>Not so worthy after all!</reason>
    </item>
  </query>
</iq>
离开房间:
<presence
    from='hag66@shakespeare.lit/pda'
    to='coven@chat.shakespeare.lit/thirdwitch'
    type='unavailable'/>
分享到:
评论

相关推荐

    xmpp 有关muc协议

    MUC是XMPP协议的一个扩展,全称为Multi-User Chat,允许用户参与多人聊天室进行实时交流。 在XMPP中,MUC协议定义了如何创建、加入、管理以及操作聊天室。以下是关于XMPP MUC协议的一些关键知识点: 1. **聊天室...

    XMPP Smack java 聊天程序

    XMPP协议支持许多高级特性,如文件传输、多用户聊天室(MUC)、服务发现等。Smack提供了相应的API来实现这些功能。例如,你可以创建MUC并邀请其他用户加入,或者通过`FileTransferManager`进行文件传输。 9. **...

    IOS XMPP 聊天程序客户端

    同时,可以使用XMPP组件(如MUC,多用户聊天室)和扩展(如XEPs)来增加功能。 在实际开发中,还需要考虑错误处理、离线消息存储、消息送达回执、群聊、推送通知等复杂情况。文件“XmppDemo”可能包含了一个简单的...

    聊天实现 xmpp

    服务器配置包括设置域名、创建用户、添加虚拟主机、开启必要的服务(如多用户聊天MUC、语音通话等)。 3. **客户端连接与认证**: 客户端应用需要连接到XMPP服务器,并进行身份验证。通常使用PLAIN、DIGEST-MD5或...

    在Android使用XMPP详细解说

    MUC(Multi-User Chat)允许创建和参与多人聊天。创建一个MUC房间,然后邀请其他用户加入,通过发送特定的stanza实现群聊功能。 ### 7. 数据推送 在Android中,XMPP可用于实现后台数据推送,提高用户体验。可以...

    xmpp message 聊天

    7. **多用户聊天(MUC)**:如果需要支持群聊功能,可以利用XMPP的多用户聊天室。`MultiUserChat`类提供了创建、加入聊天室,以及发送和接收聊天室消息的方法。 在实际开发过程中,我们需要处理各种异常情况,比如...

    swift-XMPP学习DemoSwift实现实现聊天群聊等常用功能

    - 创建多用户聊天室(MUC):使用XMPPMUC模块创建并加入聊天室,定义房间名和主题。 - 发送群聊消息:将目标JID设置为群聊室的JID,然后发送消息。 - 接收群聊消息:同样通过监听`XMPPStream`事件来接收群聊中的...

    使用Strophe连接xmpp,轻松构建web即时聊天工具

    此外,Strophe还支持处理其他XMPP实体,如订阅和呈现(Presence)、群组聊天(MUC)、文件传输等。通过扩展Strophe的XML stanza构造函数,我们可以轻松处理各种复杂的XMPP操作。 总之,Strophe.js提供了一种简单...

    iOS 实现的即时聊天

    8. **群组聊天与讨论组**:XMPP支持MUC(Multi-User Chat)服务,可以创建多人聊天室。开发者需要实现加入、退出群聊及群聊消息的处理。 9. **文件传输**:通过XEP-0096(File Transfer)扩展,XMPP能够实现文件的...

    android xmpp lib demo

    XMPP也支持多用户聊天(MUC),即群组聊天功能。开发者可以通过创建聊天室、邀请成员、发送和接收聊天室消息来实现这一功能。 七、源码分析 "XQQ"可能是这个项目的特定命名或者一个库的简称。要深入理解这个...

    xmpp手机端消息推送

    6. **群组聊天和多用户聊天室**:Openfire支持MUC(Multi-User Chat),允许创建聊天室并邀请多个用户参与。 7. **隐私和安全**:所有通信应通过TLS/SSL加密,以保护用户隐私和数据安全。 8. **推送通知**:当应用在...

    XMPP研究.zip

    "说明.txt"可能是对整个研究项目的概述,包括XMPP的基本概念、为什么选择XMPP、以及如何在Android环境中集成和使用XMPP的相关信息。而"XMPP研究"文件可能是一个项目代码库或者是一份详细的报告,涵盖了XMPP的实现...

    XMPP高级编程源码

    7. **扩展性**:XMPP的可扩展性是其一大特点,通过定义新的XML元素和命名空间,可以轻松添加新功能,如多用户聊天(MUC)、文件传输、音视频通话等。 在源码中,你可能会看到以下关键组件和概念: 1. **连接管理器...

    xmpp——Smack的IM实现

    Smack还支持多用户聊天(MUC),这是通过`MultiUserChat`类来实现的,允许用户加入聊天室并参与群聊。文件传输则可以通过`FileTransferManager`和`IncomingFileTransfer`、`OutgoingFileTransfer`接口来处理。 对于...

    asmack的API实现XMPP协议通讯

    6. **创建和管理群聊**:使用 `MUC`(多用户聊天室)API 创建和加入聊天室,发送群聊消息。 7. **断开连接**:完成通信后,应调用 `disconnect()` 断开连接,释放资源。 **标签关联知识点** 1. **Android**:...

    xmpp协议下载

    协议支持多种功能,如即时消息、文件传输、多用户聊天(MUC)、服务发现等。 Smack库包含了四个主要组件: 1. **连接管理器**(Connection Manager):负责建立和维护与XMPP服务器的连接。 2. **实体**(Entities)...

    A modular and portable open source XMPP client library wri.zip

    - **加入和管理聊天室**:通过 `MUC (Multi-User Chat)` 模块加入群聊,发送和接收群聊消息。 - **扩展功能实现**:根据需要实现 XEPs,如文件传输、音视频通话等。 ### 4. 示例代码 ```java // 创建连接配置 ...

    strophejs-1.3.0

    4. **扩展机制**:Strophe.js支持XMPP的扩展,这意味着开发者可以轻松集成自定义的XMPP扩展,例如MUC(多用户聊天室)或PubSub(发布订阅)等服务。 5. **事件驱动**:库采用了事件驱动的编程模型,通过绑定和触发...

    开源项目-processone-gox.zip

    XMPP协议支持多种扩展,如多用户聊天(MUC)、文件传输、服务发现等。 现在,让我们关注Gox库本身。Gox库的设计遵循了Go语言的哲学,强调简洁、并发和类型安全。以下是一些关键特性: 1. **并发支持**:Go语言的...

Global site tag (gtag.js) - Google Analytics