如何连接到 Jabber 会议?发送和接收消息。获取在线用户列表。
问问题
3019 次
1 回答
6
localhost
使用 prosody.im做了一些测试。我有两个客户:
alfred1
: 只是正常的 XMPP 客户端alfred2
: 我的机器人
我创建了 MUC alfred@conference.localhost
。
当我第一次从 XMPP 客户端()连接到通道alfred1
并接下来运行机器人时,我会收到来自 bot(alfred2
)的测试消息。alfred1
当我从 XMPP 客户端发送消息时,我还将在控制台中收到聊天消息。
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:
但如果您有任何问题或意见,请随时通过 XMPP 或 HTTP 加入 jabber@conference.jabber.org 聊天室。
您的意思是连接到 jabber@conference.jabber.org?
我认为应该为此查找MUC规范。我认为只使用 node-xmpp 是可能的,但 node-xmpp 是非常低级的库。我使用npmjs.org 的搜索来寻找支持 MUC 的模块,但无法让它们中的任何一个工作。我认为 MetaJack关于 MUC 的源代码可以帮助你。我猜这可能是一个有趣的项目,可以在周末实施。
当您想立即开始时,您可能应该(也许有人在 node-xmpp 中有 MUC?)看看支持 MUC的Smack(Java) 。
于 2011-07-08T12:24:16.133 回答