使用 node-xmpp 在节点中写入 Google CCS 服务器时出错

Posted

技术标签:

【中文标题】使用 node-xmpp 在节点中写入 Google CCS 服务器时出错【英文标题】:Error while writing a Google CCS server in node using node-xmpp 【发布时间】:2013-06-19 03:43:21 【问题描述】:

这是编写 CCS 服务器的 Google 文档中的 Python 代码:

https://developer.android.com/google/gcm/gs.html#server

我想出了大部分内容,以及如何使用https://github.com/astro/node-xmpp 用 Ja​​vascript 编写代码

但我不明白如何使用模板发送数据,正是这部分代码:

def send(json_dict):
  template = ("<message><gcm xmlns='google:mobile:data'>1</gcm></message>")
  client.send(xmpp.protocol.Message(
      node=template.format(client.Bind.bound[0], json.dumps(json_dict))))

在 node-xmpp 中,发送是通过以下方式完成的:

var cl = new xmpp.Client( jid: username,
                           password: password );
cl.addListener('online',
               function() 
                   argv.slice(5).forEach(
                       function(to) 
                           cl.send(new xmpp.Element('message',
                                                     to: to,
                                                      type: 'chat').
                                   c('body').
                                   t(argv[4]));
                       );

我了解正在发送的 JSON,但我无法绑定他们在 Python 中管理的模板。有什么帮助吗?

【问题讨论】:

【参考方案1】:

重要的部分是以所需的格式发送消息:

<message id="">
  <gcm xmlns="google:mobile:data">
  
      "to":"REGISTRATION_ID",  // "to" replaces "registration_ids"
      "message_id":"m-1366082849205" // new required field
      "data":
      
          "hello":"world",
      
      "time_to_live":"600",
      "delay_while_idle": true/false
  
  </gcm>
</message>

是否使用模板并不重要。我不知道python 也不知道javascript,但是python 示例中模板的目的似乎只是为了避免每次发送消息时都需要编写包装JSON 的xml 标签。您可以在发送消息时将它们附加到 JSON。

【讨论】:

我唯一的问题是,在 Node 示例中,我不确定应该将这些数据发送到哪里。在 c() 或 t() 函数调用中? @Hick 从节点发送 ccs 消息成功了吗?

以上是关于使用 node-xmpp 在节点中写入 Google CCS 服务器时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 simple-xmpp/node-xmpp 获得 Jabber 用户的名册?

HipChat Nodejs Bot - 无法接收房间消息

机器学习框架TensorFlow初识

通过 UNC 路径使用 fs 读取/写入节点中的文件

如果用户长时间没有写入,如何使用 Firebase Cloud Functions 在 Firebase 数据库中设置节点的值?

如何使用 fast-csv 将特殊字符写入节点中的 csv 文件