我正在使用xmpp4r,并试图掌握一个基本的聊天功能,我希望稍后在我的Rails应用程序中实现。我对Ruby Thread的基础知识仍然有点不稳定,所以我非常感谢大家在这方面的帮助。
虽然我注册了回调,但我没有从我的gmail帐户得到响应。我可以发送消息,但是我的ruby程序终止了。为了防止它终止,我试图停止程序中的一个线程,但我似乎不能让它工作。
require 'rubygems'
require "xmpp4r/client"
require "xmpp4r/roster"
include Jabber
def connect
client = Client.new(JID::new("test@gmail.com"))
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", "test@tech.com")
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)发布于 2010-04-11 04:00:21
您可以像XMPP4R示例那样使用Thread.stop,而不使用check(client)内容。
如果希望查看XMPP级别发生了什么,可以使用Jabber::debug = true启用控制台调试输出。
https://stackoverflow.com/questions/2198826
复制相似问题