ejabberd-18.12.1 上 mod_ping 的正确配置是啥?

Posted

技术标签:

【中文标题】ejabberd-18.12.1 上 mod_ping 的正确配置是啥?【英文标题】:what is the correct configuration of mod_ping on ejabberd-18.12.1?ejabberd-18.12.1 上 mod_ping 的正确配置是什么? 【发布时间】:2019-03-13 16:38:34 【问题描述】:

我正在使用启用了流管理的 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 admin的modules页面,mod_pingping_ack_timeout的config值似乎和ejabberd.yml文件中的不一样,这是为什么呢?

[ping_interval,60,
ping_ack_timeout,32000,
send_pings,true,
timeout_action,kill]

【问题讨论】:

【参考方案1】:

注意:使用ejabberd服务器的web admin的modules页面,mod_ping的ping_ack_timeout的config值似乎和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:
#iqid = <<"rr-1552642185584-13814872912241253802-5xOvCCobbU2TCC/RT4GaqD6M8bo=-55238004">>,
    type = get,lang = <<>>,
    from = #jiduser = <<"user1">>,server = <<"localhost">>,resource = <<>>,
                luser = <<"user1">>,lserver = <<"localhost">>,
                lresource = <<>>,
    to = #jiduser = <<"user1">>,server = <<"localhost">>,
              resource = <<"tka1">>,luser = <<"user1">>,
              lserver = <<"localhost">>,lresource = <<"tka1">>,
    sub_els = [#ping],
    meta = #

【讨论】:

感谢您的回复。将日志级别更改为 5 后,我开始看到 ping 日志。我还设法看到我的客户端收到的 ping 消息以及响应 ping 的客户端。唯一缺少的部分是服务器似乎在 ping 超时后没有终止连接,并且其他客户端没有收到不可用的存在状态。断开连接的用户在服务器上保持在线。我尝试了 Jitsi 客户端,并且在 ping 超时后用户也没有变为离线。 @TareqAssi,我面临同样的问题。你是怎么解决你的问题的?你有没有快速断开连接?

以上是关于ejabberd-18.12.1 上 mod_ping 的正确配置是啥?的主要内容,如果未能解决你的问题,请参考以下文章

电脑上GetTickCount64在哪里

.htaccess:在所有页面上强制 www,在一个页面上强制 https,在所有其他页面上强制 http

为啥当我在 grails 上删除一对多关系上的父级时,会在子级上调用 beforeInsert 事件?

地理定位在笔记本电脑上工作,但不在智能手机上

键盘上的PERIOD键在啥地方?

工作上996,生活上669,并不是什么难事儿!