使用Android应用程序在XMPP Openfire服务器中的聊天过程

使用Android应用程序在XMPP Openfire服务器中的聊天过程,xmpp,openfire,smack,Xmpp,Openfire,Smack,我将OpenFireXMPP服务器用于android聊天应用程序。我可以使用我的应用程序连接并登录到服务器 现在我想知道如何在这个聊天应用程序中发送好友请求和接受好友请求 我可以从服务器获取所有用户,但我想知道开始聊天的过程 提前感谢。添加/接受好友请求的过程比看起来要复杂一点。您需要在状态和花名册iq节中进行一些杂耍 我将尝试使用下面的contacts操作来指示发送/接收哪些节 1. Add contact To add a contact you need to send a `su

我将OpenFireXMPP服务器用于android聊天应用程序。我可以使用我的应用程序连接并登录到服务器

现在我想知道如何在这个聊天应用程序中发送好友请求和接受好友请求

我可以从服务器获取所有用户,但我想知道开始聊天的过程


提前感谢。

添加/接受好友请求的过程比看起来要复杂一点。您需要在
状态
花名册iq
节中进行一些杂耍

我将尝试使用下面的contacts操作来指示发送/接收哪些节

1. Add contact
    To add a contact you need to send a `subscribe` stanza. 
    <presence xmlns="jabber:client" to="you@app.com/123" id="9VO8j-1" type="subscribe" from="me@app.com/1234" />
    1.1. Request accepted
        When adding a contact and the other app "accepts the request" you receive two stanzas:
            1. <presence xmlns="jabber:client" from="you@app.com/123" id="9VO8j-1" type="subscribed" to="me@app.com/1234" />
            2. <presence xmlns="jabber:client" from="you@app.com/123" id="9VO8j-2" type="subscribe" to="me@app.com/1234" />
            3. <presence xmlns="jabber:client" from="me@app.com/1234" id="9VO8j-3" type="subscribed" to="you@app.com/123" />

    1.2. Request Denied
        When the request is denied you receive an "UNSUBSCRIBED" stanza.
            Example: <presence xmlns="jabber:client" from="you@app.com/123" id="9VO8j-1" type="unsubscribed" to="me@app.com/1234" />

2. Accept contact request
    1. <presence xmlns="jabber:client" from="me@app.com/1234" id="9VO8j-1" type="subscribed" to="you@app.com/123" />
    2. <presence xmlns="jabber:client" from="me@app.com/1234" id="9VO8j-2" type="subscribe" to="you@app.com/123" />

3. Deny contact request
    <presence xmlns="jabber:client" from="me@app.com/1234" id="9VO8j-1" type="unsubscribed" to="you@app.com/123" />

4. Remove contact
    When you "Delete" a contact you should be in fact be "deleting" it locally in your app and from the roster. 
    This is done by sending two stanzas:
        1. <presence xmlns="jabber:client" from="me@app.com/1234" id="9VO8j-3" type="unsubscribe" to="you@app.com/123"/>
        2. <iq from='me@app.com/1234' id='ah382g67' to='you@app.com/123' type='set'>
             <query xmlns='jabber:iq:roster' ver='ver34'>
               <item jid='you@app.com/123' subscription='remove'/>
             </query>
            </iq>
1。添加联系人
要添加联系人,您需要发送“订阅”节。
1.1. 接受请求
在添加联系人和其他应用程序“接受请求”时,您会收到两个小节:
1.
2.
3.
1.2. 请求被拒绝
当请求被拒绝时,您将收到一个“取消订阅”小节。
例子:
2.接受联系请求
1.
2.
3.拒绝联系请求
4.解除接触
当你“删除”一个联系人时,你实际上应该是在你的应用程序和花名册中本地“删除”它。
这是通过发送两节来完成的:
1.
2.
注意:上述用例不包括与
状态相关的所有iq:Floster节。只要联系人更改
订阅
询问
类型,服务器就会自动发送这些信息

为了更好地了解这些工作流的详细工作方式,我建议您阅读最新的RFC(由您的服务器实现)。你可以在地图上找到它


参见第3节。管理花名册

我假设您正在使用Smack作为android应用程序的xmpp sdk?是的,android端的Smack api@mark可能与忘记提及的内容重复。这是一个通用的答案,您可以轻松地将其调整为
smack
并发送/处理所需的小节。