捕获XMPP错误(在PHP中)

时间:2019-01-07 09:39:12

标签: xml xmpp chat

捕获XMPP相关错误的最有效方法是什么?我已经看到了XMPP documentation中可用错误的列表,但是实际上,如果我想从中使用有用的东西,我需要找到一种解析它们的方法,但是我遇到了麻烦,因为例如是一种错误类型:

<stream:error xmlns:stream="http://etherx.jabber.org/streams">
    <conflict xmlns="urn:ietf:params:xml:ns:xmpp-streams"/>
</stream:error>

如果我尝试注册两个相同的完整JID,则会出现错误。

如果我尝试使用未知的凭证进行注册,那么我基本上会遇到三种相同的错误。

失败标签:

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
    <not-authorized/>
</failure>

IQ节:

<iq type="error" to="openfire.mysender.ru/afxdu5ciun">
    <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
        <resource>123</resource>
    </bind>
    <error code="401" type="auth">
        <not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    </error>
</iq>

存在节:

<presence to="openfire.mysender.ru/afxdu5ciun" type="error">
    <error code="401" type="auth">
        <not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    </error>
</presence>

在这种情况下,我发现我可以做一个正则表达式来捕获错误标签:

<error.*\/error>

...但这真的是要走的路吗?我永远不会用这种方式捕获第一个<stream:error><failure>标记,并且执行3个不同的regex表达式也感觉不是一种很好的编程习惯。

0 个答案:

没有答案