【问题标题】:XMPP4r bot presence - randomly appearing offline until restart?XMPP4r 机器人存在 - 随机出现离线直到重新启动?
【发布时间】:2011-09-09 08:32:31
【问题描述】:

我有一些使用 XMPP4r 构建的机器人,但我看到一个奇怪的问题,即它们在联机一段时间后会出现脱机。 (没有固定的时间)

有一天晚上我会在我的名单中看到他们很好,第二天早上我会在第二天早上醒来发现他们出现在离线状态。我可以给他们发消息,他们回复很好,他们只是显示离线。

如果我重新启动它们,它们将立即再次出现在我的名单中。这发生在多个 XMPP 客户端(iChat、Adium、Meebo)和多个独立的机器人身上,所以我不认为这是侥幸。

关于我应该从哪里开始寻找的任何建议?我正在运行我自己的 Prosody 服务器,所以我知道这不是重新启动。会不会是静默重新连接问题?

【问题讨论】:

  • 经过更多研究,我注意到我没有回复 IQ ping。这可能与它有关 - 检查。
  • 如果这对任何人都有帮助,响应 IQ ping 并没有帮助,尽管这是我本来应该做的事情。似乎确实有帮助的是创建一个线程来改变我每小时的状态 - 这感觉有点老套,我想知道一个更好的解决方案。
  • 好吧,如果它有帮助 - 我有一个 hacky 解决方案。在我的机器人课程中,我有一个计时器,每小时都会更改我的在线状态消息。 (看来我必须将其更改为不同的文本,我不能只是尝试再次使用相同的消息重新发送我的存在)我不喜欢这种方法,但我的机器人已经运行了一个多星期没有问题.

标签: ruby xmpp xmpp4r


【解决方案1】:

突然我们友好的叫 Bender 的聊天机器人停止工作,我发现主要问题是服务器发送如下 ping:

<iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='s2c1' type='get'>
  <ping xmlns='urn:xmpp:ping'/>
</iq>

客户应该这样回应:

<iq from='juliet@capulet.lit/balcony' to='capulet.lit' id='s2c1' type='result'/>

更多信息http://xmpp.org/extensions/xep-0199.html#s2c

我在尝试连接到 Mountain Lion Server 消息服务器时发生了这种情况(也许其他服务器有相同的要求)。

一位朋友找到了一个简单的方法来解决这个问题:

#!/usr/bin/env ruby
require 'rubygems'
require 'xmpp4r'
require 'xmpp4r/roster'
require 'xmpp4r/client'
require 'xmpp4r/muc'

Jabber::debug = true
client = Jabber::Client.new(Jabber::JID.new('user@macbook.local'))
client.connect
client.auth('password')
muc = Jabber::MUC::MUCClient.new(client)
muc.join(Jabber::JID::new('chatroom@conference.macbook.local' + client.jid.node))

# add the callback to respond to server ping
client.add_iq_callback do |iq_received|
  if iq_received.type == :get
    if iq_received.queryns.to_s != 'http://jabber.org/protocol/disco#info'
      iq = Jabber::Iq.new(:result, client.jid.node)
      iq.id = iq_received.id
      iq.from = iq_received.to
      iq.to = iq_received.from
      client.send(iq)
    end
  end
end

我希望这段代码可以帮助其他人。

问候 爱德华多

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 2016-04-02
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2021-12-21
    • 2022-11-12
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多