gpt4 book ai didi

xmpp - Ejabberd MucSub : When a member sends a presence unavailable, 服务没有响应

转载 作者:行者123 更新时间:2023-12-05 07:16:09 25 4
gpt4 key购买 nike

我正在使用 Ejabberd 19.09 和 mucsub 进行持久的群组对话。

当一个组的成员发送状态不可用时,有时服务器根本不响应。如果我们在状态不可用之前发送状态可用后重复相同的测试,服务器会响应。无论如何,显然,我们的房间入住率没有变化。

这是预期的行为吗?

第一次测试:

重现第一个测试的步骤:

  1. admin test1 创建房间 roomX(仅限成员(member))
    <!-- [CREATE ROOM] | test1 -->
<iq from='test1@x.com' to='roomX@conference.x.com' type='set' id='1111111'>
<subscribe xmlns='urn:xmpp:mucsub:0' nick='test1'>
<event node='urn:xmpp:mucsub:nodes:messages' /><event node='urn:xmpp:mucsub:nodes:affiliations' /><event node='urn:xmpp:mucsub:nodes:subject' /><event node='urn:xmpp:mucsub:nodes:config' /><event node='urn:xmpp:mucsub:nodes:subscribers' /><event node='urn:xmpp:mucsub:nodes:presence' />
</subscribe>
</iq>
  1. admin test1 邀请并订阅用户 test2
<!-- [INVITE test2] | test1 -->
<message from='test1@x.com' id='33333' to='roomX@conference.x.com'>
<x xmlns='http://jabber.org/protocol/muc#user'>
<invite to='test2@x.com'><reason>REASON</reason></invite>
</x>
</message>
<!-- [SUBSCRIBE test2 TO ROOM] | test1 -->
<iq from='test1@x.com' to='roomX@conference.x.com' type='set' id='222222'>
<subscribe xmlns='urn:xmpp:mucsub:0' jid='test2@x.com' nick='test2'>
<event node='urn:xmpp:mucsub:nodes:messages' /><event node='urn:xmpp:mucsub:nodes:presence' /><event node='urn:xmpp:mucsub:nodes:subject' /><event node='urn:xmpp:mucsub:nodes:config' /><event node='urn:xmpp:mucsub:nodes:subscribers' /><event node='urn:xmpp:mucsub:nodes:presence' />
</subscribe>
</iq>
  1. 邀请被自动接受,用户test2现在是房间成员,他可以发送消息并且他订阅了所有事件
  2. 成员test2想放弃房间,发送presence type=unavailable
<!-- [test2 leaves the room] | test2 -->
<presence to='roomX@conference.x.com/test2' from='test2@x.com' type='unavailable'>
<status>leave</status>
</presence>

结果:

  • 服务不响应成员(member)
  • 房间入住率没有变化:成员(member)的隶属关系仍然“成员(member)”,角色仍然是“成员(member)”,订阅仍然有效

第二次测试:

重现第二个测试的步骤:

  1. admin test1 创建房间 roomX(仅限成员(member))
  2. admin test1 邀请并订阅用户 test2
  3. 邀请被自动接受,用户test2现在是房间成员,他可以发送消息并且他订阅了所有事件
  4. 成员 test2 发送 presence type=available(理论上这是多余的,但它是故意作为此测试的一部分)
<!-- [test2 JOINS THE ROOM] | test2 -->
<presence from='test2@x.com' id='n13mt3l' to='room@conference.x.com/test2'>
<x xmlns='http://jabber.org/protocol/muc'/>
</presence>
  1. 成员test2想放弃房间,发送presence type=unavailable

结果

  • 服务响应成员(member)
  • 房间入住率没有变化:成员(member)的隶属关系仍然“成员(member)”,角色仍然是“成员(member)”,订阅仍然有效

最佳答案

First test: Steps: admin invites a member member

我想使用 https://xmpp.org/extensions/xep-0045.html#invite-mediated

sends a presence unavailable

为什么?它应该是一条消息,而不是存在:

The invitee MAY choose to formally decline (as opposed to ignore) the invitation; and this is something that the sender might want to be informed about. In order to decline the invitation, the invitee MUST send a message of the following form to the itself:

关于xmpp - Ejabberd MucSub : When a member sends a presence unavailable, 服务没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com