好吧,因为要测试,所以,需要用xmpp4r写一些测试代码, 也能更深入的了解xmpp的协议
1, 如何加入一个群组
xmpp4r 群组定义的类是 MUCClient.rb,位于 'xmpp4r/muc/helper/mucclient' 当然,它的子类 simplemuclient更强大,可以使用它。
1.1 先连接xmpp server
server_str = get_jid #用户名@服务器地址/资源号(资源号可以任意设定) jid = JID::new(server_str) password = APPCONFIG[:password] cl = Client::new(jid) cl.connect cl.auth(password)
1.2 初始化Muc
m = Jabber::MUC::MUCClient.new(cl)
1.3 加入群组并且发送消息
gm = Message.new(nil, "group chat").set_type(:groupchat) m.send gm, false
Message需要设置type 为 groupchat, send方法的to 应该为false
1.4 补充说明,引入的类
require 'xmpp4r' require 'xmpp4r/client' require 'xmpp4r/roster/iq/roster' require 'xmpp4r/muc/helper/simplemucclient' require 'xmpp4r/muc/helper/mucclient' include Jabber
如下是我的 muc的定义
def get_group_jid "song@conference.192.168.1.126/ruby" end
这样有一个小的问题, ruby 是群组中用户的昵称,应该使用 from_user
##################2012-4-13 补充##################################################
1. 5 如何向 群组 发送 iq 字节?
现在有一个需求,用户A在 房间里(muc)发一件礼物给指定的用户B,改如何实现?
我先前的打算是 发送iq 节,但是group如何发送iq节点呢?
先看如下一段代码,
bs = Jabber::MUC::MUCBrowser.new(cl) rooms = bs.muc_rooms(APPCONFIG[:jid]) sleep 3 puts rooms.inspect
这段代码是向服务器查询,现在正有多少个房间
发送的xml文件如下
<iq from='tester001@192.168.1.126/testing' id='3743' to='conference.192.168.1.126' type='get'><query xmlns='http://jabber.org/protocol/disco#items'/></iq>