node.jsnode-xmpp

Connecting to Conference over node-xmpp on Node.js


How to connect to a Jabber conference? Send and receive messages. Get a list of online users.


Solution

  • Did some testing from localhost using prosody.im. I had two clients:

    I created MUC alfred@conference.localhost.

    When I first connect to channel from XMPP client(alfred1) and next run the bot, I receive test message from bot(alfred2). And I will also receive chat message from alfred1 in console when I sent message from 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);
    });
    

    Maybe later I try to improve code a bit, but I guess this gets you going...


    From jabber.org:

    but as always feel free to join the jabber@conference.jabber.org chatroom via XMPP or HTTP if you have questions or comments.

    You mean connecting to jabber@conference.jabber.org?

    I believe that should look up MUC specifications for that. I think it is possible using only node-xmpp, but node-xmpp is pretty low-level library. I used npmjs.org's search to look for modules supporting MUC, but could not get any of them working yet.. I think MetaJack's source-code about MUC could help you out. This could be a fun project to implement over the weekend I guess.

    When you like to get started immediately you should probably(maybe somebody has MUC in node-xmpp?) have a look at Smack(Java) for example which does support MUC.