在Node.js上通过XMPP连接到Google Talk

我尝试过使用Node.js的各种XMPP库,并且无法连接到Google Talk的XMPP服务器。 我想连接和阅读朋友的地位,但我甚至不能走出去!

  1. 我有一个通过Google Apps for Domains托pipe的个人域名,例如mydomain.com
  2. 我已经写了下面的代码 – 它使用node-xmpp库( https://github.com/astro/node-xmpp ):

     jid = 'ryan@mydomain.com'; 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); }); 

build立了连接,但身份validation失败,我从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库,但仍然无法进行身份validation。 我100%确定我的Google用户名和密码是正确的 – 任何提示/想法?

弄清楚了。

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

在我上面的示例中,您将需要更改:

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

…至…

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

我在Ubuntu的Linux上,所以要安装它我首先必须做到这一点(首先安装节点/ npm 下面从npm网站receipe )。

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

有了这个片段,我成功login并从我的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); });