我写了一个愚蠢的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上启动服务发现并得到错误:
您输入的地址没有服务,或者没有响应。检查地址,然后重试。
我想念什么?
答案 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
)。我不知道事情是如何工作的,但是这应该提示你断开与远程服务器的连接,在本地服务器上创建帐户并用它登录,然后发现将按预期工作。