2

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

4

1 回答 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 回答