这是一个简单的例子,如何上线和收消息,假设用户test/123,登录本机。
jid=Jabber::JID.new("test@magicgod-laptop/xmpp4r")
j=Jabber::Client.new(jid)
j.connect("localhost")
j.auth("123")
j.send(Jabber::Presence.new(:chat,"ok"))
debug_log("conn:#{j.respond_to?(:is_connected?) && j.is_connected?}")
exit=false
j.add_message_callback do |m|
debug_log("message:#{m.body} type:#{m.type} m:#{m}")
if m.body!=nil && !m.body.empty?
exit=true
end
end
while ! exit do
sleep(5)
debug_log("sleep exit:#{exit}")
end
debug_log("disconnect")
j.close
这几句是登录,非常简单。connect后面的服务器要选最快的,比如:localhost要比机器名快。
jid=Jabber::JID.new("test@magicgod-laptop/xmpp4r")
j=Jabber::Client.new(jid)
j.connect("localhost")
j.auth("123")
这是上线,:chat就是说明自己可以谈话了,还有:away, :dnd, :xa,也可以是nil,但是似乎在opefire要用:chat。
j.send(Jabber::Presence.new(:chat,"ok"))
加一个callback,有消息来就会调用,里面没做什么事,只是打印一下,然后设一个退出标志。
j.add_message_callback do |m|
debug_log("message:#{m.body} type:#{m.type} m:#{m}")
if m.body!=nil && !m.body.empty?
exit=true
end
end
等待,为了防止CPU占用,sleep一下。
while ! exit do
sleep(5)
debug_log("sleep exit:#{exit}")
end
接收消息是一个典型的异步模式,使用一个callback来处理。
xmpp4r-simple试用了一下,觉得确实是简化了,它使用一个queue来处理消息,上线之类的,如果要求不高可以用这个API,更简单一点。