0

我编写了一个愚蠢的 hello-world XEP-0114 组件并将其连接到 Prosody 和 ejabberd。现在我想使用服务发现来宣布服务的存在并提供有关其使用的说明。

因此,我寻求一种方法,让任何拥有远程或本地 JID 的人都能发现它,以提供有关它的更多详细信息。

对于韵律我做:

Component "foo.localhost"
  component_secret = "secret"

disco_items = {
  { "foo.localhost", "FOO BAR" };
}

对于 ejabberd,我这样做:

modules:
  mod_disco:
    extra_domains:
      - "foo.localhost"
      - "localhost"
    server_info:
      -
        modules: all
        name: "abuse-addresses"
        urls:
          - "foo.com"
listen:
  - 
    port: 8888
    module: ejabberd_service
    access: all
    shaper_rule: fast
    ip: "127.0.0.1"
    hosts:
      "foo.localhost":
        password: "secret"

然后在 Gajim 我在 localhost 上启动服务发现并得到错误:

您输入的地址没有服务,或者没有响应。检查地址,然后重试。

我想念什么?

4

1 回答 1

0

遇到麻烦时要检查的第一件事是 xmpp 客户端(Gajim)的 XML 控制台,在那里我发现了这个:

<iq xmlns="jabber:client" to="localhost" type="get" id="546">
<query xmlns="http://jabber.org/protocol/disco#info" />
</iq>

<iq xml:lang='en' to='mynickhere@jabb.im/Gajim' from='localhost' type='error' id='546'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
<error code='504' type='wait'>
<remote-server-timeout xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<text xml:lang='en' xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Stream closed by peer: host-unknown</text>
</error>
</iq>

它表明发现请求被发送到当前使用的帐户所在的服务器(jabb.im)。我不知道事情是如何工作的,但这应该会提示您断开与远程服务器的连接,在本地服务器上创建帐户并使用它登录,然后发现将按预期工作。

于 2017-07-08T17:37:21.247 回答