如何连接Jabber会议?发送和接收消息。获取在线用户列表。
答案 0 :(得分:6)
使用prosody.im从localhost
进行了一些测试。我有两个客户:
alfred1
:通常是XMPP客户端alfred2
:我的机器人我创建了MUC alfred@conference.localhost
。
当我第一次从XMPP客户端(alfred1
)连接到频道并且接下来运行僵尸程序时,我从bot(alfred2
)收到测试消息。当我从XMPP客户端发送消息时,我还会在控制台中收到来自alfred1
的聊天消息。
var xmpp = require('node-xmpp'),
sys = require('sys'),
jid = 'alfred2@localhost',
password = '1234',
room_jid = 'alfred@conference.localhost',
room_nick = 'alfred2',
conn = new xmpp.Client({
jid : jid,
password : password,
});
conn.on('online', function () {
console.log('online');
//var elm2 = new xmpp.Element('presence', { from: jid, to: 'alfred@conference.localhost'}).c('x', {'xmlns': 'http://jabber.org/protocol/muc' }).up();
conn.send(new xmpp.Element('presence', { to: room_jid +'/' + room_nick }).
c('x', { xmlns: 'http://jabber.org/protocol/muc' })
);
conn.send(new xmpp.Element('message', { to: room_jid, type: 'groupchat' }).
c('body').t('test')
);
});
conn.on('stanza', function(stanza) {
sys.puts(stanza);
});
conn.on('error', function(e) {
sys.puts(e);
});
也许稍后我会尝试改进代码,但我想这会让你去...
来自jabber.org:
但随时随地加入 jabber@conference.jabber.org聊天室 如果您有疑问,请通过XMPP或HTTP 或评论。
您的意思是连接到jabber@conference.jabber.org?
我认为应该查看MUC规范。我认为只使用node-xmpp是可能的,但node-xmpp是相当低级的库。我使用npmjs.org's search来寻找支持MUC的模块,但是还没有让任何一个模块正常工作......我认为MetaJack的source-code about MUC可以帮助你。这可能是一个有趣的项目,我想在周末实施。
当你想立即开始时,你应该(也许有人在node-xmpp中有MUC吗?)看看Smack(Java),例如支持MUC。