通过Node.js上的node-xmpp连接到会议

时间:2011-07-08 10:42:16

标签: node.js node-xmpp

如何连接Jabber会议?发送和接收消息。获取在线用户列表。

1 个答案:

答案 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。