Help with Ruby XMPP4R

Hi All,

A complete newbie here, I have been left some Ruby code by a contractor
and need some help.

I would like the bot to reconnect when it is kicked from the room or
when the server is rebooted/goes offline. Current this is happening, but
the time it takes for it to reconnect is random, sometimes it will take
5 minutes others 50 seconds.

Also, how would I go about adding some logging?

Thanks in advance for your help

Nick

CODE

#!/usr/bin/env ruby
require ‘rubygems’
require ‘xmpp4r/client’
require ‘xmpp4r/roster’
require ‘xmpp4r/muc’
require ‘socket’
require ‘daemons’
include Jabber

options = {}
options[:host] = ‘XXXXXX’
options[:port] = 5222
options[:jid] = “[email protected]/#ETVDVXDF
options[:password] = ‘XXXXXX’
options[:room_jid] = ‘[email protected]/XXXXX’

Bind to localhost

server = TCPServer.new(“127.0.0.1”, 5223) # Server bind to port 5223

cl = Client.new(JID::new(options[:jid]))

def reconnect(cl)
cl.connect(‘XXXXXX’, 5222 )
cl.auth( ‘XXXXX’)
cl.send(Presence.new.set_type(:available))
end

cl.connect(‘talk.google.com’, 5222 )
cl.auth( ‘XXXXXXX’)
cl.send(Presence.new.set_type(:available))

muc_room = MUC::SimpleMUCClient.new(cl)
muc_room.join(options[:room_jid])

while true
Thread.start(server.accept) do |cl|
response = cl.gets
muc_room.say(response)
cl.close
end
end

reconnect(cl)
cl.on_exception { sleep 1; reconnect(cl) }

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs