针对Prosody或ejabberd中的自定义XEP-0114组件的本地主机服务发现

时间:2017-07-08 09:52:10

标签: xmpp ejabberd prosody-im

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

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

对于Prosody我做:

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上启动服务发现并得到错误:

  

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

我想念什么?

1 个答案:

答案 0 :(得分:0)

检查遇到麻烦的第一件事是xmpp-client(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)。我不知道事情是如何工作的,但是这应该提示你断开与远程服务器的连接,在本地服务器上创建帐户并用它登录,然后发现将按预期工作。