Провел тестирование с 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.