我正在使用启用了流管理的ejabberd服务器version 18.12.1
。当用户断开与Internet的连接时,它的存在会保持在线状态,因此我决定使用mod_ping
在使用Mod ping
我在ejabberd.yml
文件中使用了以下配置:
mod_ping:
send_pings: true
ping_ack_timeout: 32
timeout_action: kill
考虑默认值ping_interval
:60。
Ping似乎不适用于此配置。我是否还缺少其他配置?客户应该启用一些东西使它起作用吗?我可以检查任何ping日志吗?
注意:使用ejabberd服务器的Web管理员的模块页面,ping_ack_timeout
的{{1}}的配置值似乎与{ {1}}文件,为什么?
mod_ping
答案 0 :(得分:1)
注意:使用ejabberd服务器的Web管理员的模块页面,mod_ping的ping_ack_timeout的配置值似乎与ejabberd.yml文件中的配置值不同,为什么?
这是预料之中的:您以秒为单位设置了人类可配置的选项,然后内部时间值以毫秒(erlang使用的时间单位)表示。
我是否缺少其他配置?客户应该启用一些东西使它起作用吗?我可以检查任何ping日志吗?
那应该足够了。尝试与其他客户端,只是检查是否以任何方式影响。我已经安装了ejabberd 18.12,配置如下:
loglevel: 5
...
mod_ping:
send_pings: true
ping_interval: 10
ping_ack_timeout: 15
timeout_action: kill
然后,我启动ejabberd并使用Tkaber客户端登录(但我认为任何客户端都适合测试ping)。客户端每十秒钟会收到以下查询:
<iq to='user1@localhost/tka1'
from='user1@localhost'
type='get'
id='rr-1552642185584-13814872912241253802-5xOvCCobbU2TCC/RT4GaqD6M8bo=-55238004'>
<ping xmlns='urn:xmpp:ping'/>
</iq>
同时,ejabberd日志文件显示了几条消息,从以下消息开始:
10:29:30.585 [debug] route:
#iq{id = <<"rr-1552642185584-13814872912241253802-5xOvCCobbU2TCC/RT4GaqD6M8bo=-55238004">>,
type = get,lang = <<>>,
from = #jid{user = <<"user1">>,server = <<"localhost">>,resource = <<>>,
luser = <<"user1">>,lserver = <<"localhost">>,
lresource = <<>>},
to = #jid{user = <<"user1">>,server = <<"localhost">>,
resource = <<"tka1">>,luser = <<"user1">>,
lserver = <<"localhost">>,lresource = <<"tka1">>},
sub_els = [#ping{}],
meta = #{}}