Подключение к конференции через узел-xmpp на Node.js - PullRequest
2 голосов
/ 08 июля 2011

Как подключиться к конференции Jabber?Отправлять и получать сообщения.Получить список онлайн-пользователей.

1 Ответ

6 голосов
/ 08 июля 2011

Провел тестирование с localhost с использованием prosody.im.У меня было два клиента:

  • alfred1: просто нормально XMPP-клиент
  • alfred2: мой бот

Я создал MUC alfred@conference.localhost.

Когда я впервые подключаюсь к каналу от клиента XMPP (alfred1) и затем запускаю бота, я получаю тестовое сообщение от бота (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:

, но, как всегда, вы можете присоединиться к чату jabber@conference.jabber.org через XMPP или HTTP.если у вас есть вопросы или комментарии.

Вы имеете в виду подключение к jabber@conference.jabber.org?

Я считаю, что следует поискать спецификации MUC для этого,Я думаю, что это возможно, используя только node-xmpp, но node-xmpp - довольно низкоуровневая библиотека.Я использовал поиск npmjs.org для поиска модулей, поддерживающих MUC, но пока не смог заставить работать какой-либо из них ... Я думаю, что исходный код MetaJack для MUC мог бы вам помочь.Я думаю, это может быть забавный проект для реализации в выходные дни.

Когда вы хотите начать немедленно, вам, вероятно, следует (возможно, у кого-то есть MUC в node-xmpp?) Взглянуть на Smack (Java) например, который поддерживает MUC.

...