2010-12-03 28 views
11

我试过对Node.js使用各种XMPP库,并且无法连接到Google Talk的XMPP服务器。我想连接并阅读朋友的状态,但我甚至无法离开!通过Node.js上的XMPP连接到Google Talk

  1. 我有通过Google Apps for Domains托管的个人域名,例如mydomain.com
  2. 我有下面的代码编写的 - 它利用了节点XMPP库(https://github.com/astro/node-xmpp)的:

    jid = '[email protected]'; 
    password = 'my_google_password'; 
    
    // Establish a connection 
    var conn = new xmpp.Component({ 
        jid   : jid, 
        password : password, 
        host  : 'talk.google.com', 
        port  : 5222 
    }); 
    conn.on('online', function(){ 
        sys.put("ONLINE");   
    }); 
    conn.on('error', function(e) { 
        sys.puts(e); 
    }); 
    

连接建立,但验证失败,我收到此消息从Google Talk返回:

<stream:error xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client"> 
    <not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-streams"/> 
</stream:error> 

...我错过了什么吗?我试过其他库(https://github.com/mwild1/xmppjs),甚至是Python库,但仍然无法进行身份验证。我100%确定我的Google用户名和密码是正确的 - 任何提示/想法?

+0

顺便说一句,我相信xmppjs是一个组件库,不能用来连接到谷歌。 – Alfred 2010-12-04 00:05:46

+0

也许你应该接受你自己的答案,以便这个话题可以被关闭? – Alfred 2010-12-05 01:40:18

回答

11

想通了。

我正在处理一些不准确的例子。

在我上面的例子中,你会想改变:

var conn = new xmpp.Component({...}) 

...到...

var conn = new xmpp.Client({...}) 
+0

lol oops。没有阅读这个正确的:)。你已经解决了你的问题:) – Alfred 2010-12-04 00:58:48

7

我在Ubuntu Linux所以安装它我首先必须这样做(首先安装节点/ npm following receipe from npm website)。

sudo apt-get install libexpat1 libexpat1-dev 
npm install node-xmpp 
sudo apt-get install libicu-dev 
npm install node-stringprep 

在这个片段中我成功地登录并发送一条消息从我的Gmail帐户我jabber.org帐户:

var argv = process.argv; 
const xmpp = require('node-xmpp'); 
const sys = require('sys'); 

if (argv.length != 5) { 
    sys.puts('Usage: node xmpp.js <my-jid> <my-password> <to>'); 
    process.exit(1); 
} 

const jid = argv[2]; 
const password = argv[3]; 
const to = argv[4]; 

// Establish a connection 
const conn = new xmpp.Client({ 
    jid   : jid, 
    password : password, 
    host  : 'talk.google.com', 
    port  : 5222 
}); 

conn.on('online', function(){ 
    console.log('online'); 

    conn.send(new xmpp.Element('presence')); 
    conn.send(new xmpp.Element('message', 
     { to: to, // to 
      type: 'chat'}). 
      c('body'). 
      t('testje')); 
}); 

conn.on('error', function(e) { 
    sys.puts(e); 
});