2011-07-08 65 views

回答

6

使用prosody.im從localhost做了一些測試。我有兩個客戶:

  • alfred1:只是正常XMPP客戶
  • alfred2:我的機器人

我創建MUC [email protected]

當我第一次連接到XMPP客戶端的通道(alfred1),然後運行bot時,我收到來自bot的測試消息(alfred2)。當我從XMPP客戶端發送消息時,我還會在控制檯收到來自alfred1的聊天消息。

var xmpp = require('node-xmpp'), 
     sys = require('sys'), 
     jid = '[email protected]', 
     password = '1234', 
     room_jid = '[email protected]', 
     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: '[email protected]'}).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:

但一如既往如果您有疑問 或評論,請隨時通過XMPP或HTTP加入 [email protected]聊天室 。

您的意思是連接到[email protected]

我相信應該查閱MUC規格。我認爲只能使用node-xmpp,但node-xmpp是相當低級的庫。我使用npmjs.org's search尋找支持MUC的模塊,但是無法讓它們工作。我認爲MetaJack的source-code about MUC可以幫助你。這可能是一個有趣的項目,我猜想在週末實施。

當你喜歡立即開始時,你應該可能(也許有人在node-xmpp中有MUC?)看看Smack(Java),例如它支持MUC。

+0

規格 http://xmpp.org/extensions/xep-0045.html#register 的node.js例如 http://pastebin.com/FdWHYTq9 但沒有結果,用戶未登錄到聊天=( – igor

+0

yup創建節自己是棘手的;)... – Alfred

+0

說實話我也不是專家那..希望別人可以幫助你更好... – Alfred

相關問題