我正在使用ejabberd服务器version 18.12.1
启用流管理。当用户从互联网断开连接时,它的存在仍然在线,因此我决定使用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
的mod_ping
的配置值似乎与ejabberd.yml
文件中的配置值不同,为什么会这样?
[{ping_interval,60},
{ping_ack_timeout,32000},
{send_pings,true},
{timeout_action,kill}]
注意:使用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 = #{}}