开发者

Connecting to Conference over node-xmpp on Node.js

开发者 https://www.devze.com 2023-03-19 07:19 出处:网络
How to connect to a Jabber conference? Send and receive messages. Get a li开发者_运维知识库st of online users.Did some testing from localhost using prosody.im. I had two clients:

How to connect to a Jabber conference? Send and receive messages. Get a li开发者_运维知识库st of online users.


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

  • alfred1: Just normally XMPP client
  • alfred2: My bot

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消