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

igo*_*gor 2 node.js node-xmpp

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

Alf*_*red 6

localhost使用prosody.im进行了一些测试.我有两个客户:

  • alfred1:通常是XMPP客户端
  • alfred2:我的机器人

我创建了MUC alfred@conference.localhost.

当我第一次从XMPP客户端(alfred1)连接到通道然后运行机器人时,我从bot(alfred2)接收测试消息.alfred1当我从XMPP-client发送消息时,我也会从控制台收到聊天消息.

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);
});
Run Code Online (Sandbox Code Playgroud)

也许以后我尝试改进代码,但我想这会让你去...


来自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?)看看Smack(Java),例如它支持MUC.