Im utilisant xmpp4r et essayant d'obtenir le coup d'une fonction de base de causerie que je souhaite implémenter plus tard dans mon application de Rails. Mes bases sur Ruby Threads sont encore un peu tremblantes alors j'apprécierais toute aide à ce sujet.Les rappels de XMPP4R ne semblent pas fonctionner
Bien que j'inscris le rappel, je ne reçois pas de réponse de mon compte Gmail. Je suis capable d'envoyer un message, mais mon programme ruby se termine. Afin de l'empêcher de se terminer, j'ai essayé d'arrêter les discussions dans le programme, mais je n'arrive pas à le faire fonctionner.
require 'rubygems'
require "xmpp4r/client"
require "xmpp4r/roster"
include Jabber
def connect
client = Client.new(JID::new("[email protected]"))
client.connect
client.auth("test")
client.send(Presence.new.set_type(:available))
client
end
def create_message(message, to_email)
msg = Jabber::Message::new(to_email, message)
msg.type = :chat
msg
end
def subscribe(email_id)
pres = Presence.new.set_type(:subscribe).set_to(email_id)
pres
end
client = connect
roster = Roster::Helper.new(client)
roster.add_subscription_request_callback do |item,pres|
roster.accept_subscription(pres.from)
end
def create_callback(client)
$t4= Thread.new do
client.add_message_callback do |m|
puts m.body
puts "................................Callback working"
end
end
end
puts "Client has connected"
msg = create_message("Welcome to the winter of my discontent", "[email protected]")
client.send(msg)
create_callback(client)
def check(client)
$t3 = Thread.new do
loop do
puts "t3 still running........."
Thread.current.stop
$t4.join
end
end
end
check(client)