xmpp4r 如何上线,收消息

本文介绍了一个基于XMPP4R的简易示例,演示了如何实现客户端登录、发送在线状态及接收消息等功能。通过设置回调函数处理消息接收,利用异步模式确保高效的消息处理。
这是一个简单的例子,如何上线和收消息,假设用户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,更简单一点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值