Node.js xmpp 客户端收到“BAD_REGISTRATION”错误作为消息响应
Posted
技术标签:
【中文标题】Node.js xmpp 客户端收到“BAD_REGISTRATION”错误作为消息响应【英文标题】:Node.js xmpp client gets "BAD_REGISTRATION" error as message response 【发布时间】:2016-01-15 14:17:02 【问题描述】:这段代码可能有什么问题?我正在尝试向我的移动设备发送推送通知。到目前为止没有运气.. 用 php 做了一个小测试,并使用 GCM HTTP 协议来了解我的 API 和密码是否正确 - 一切都像一个魅力.. 这是我的代码 sn-p 不工作。
var xmpp = require('node-xmpp-client');
var ltx = require('ltx');
var options =
jid: 'xxxxxxxxxxx@gcm.googleapis.com',
password: 'AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
port: 5235,
host: 'gcm.googleapis.com',
legacySSL: true,
preferredSaslMechanism: true
;
var xmppClient = new xmpp.Client(options);
xmppClient.connection.socket.setTimeout(0);
xmppClient.connection.socket.setKeepAlive(true, 10000);
xmppClient.on('online', function()
var receiver = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx-GnbkL2e5UlsS4utMw9rLTFrcsrhqxeH8xvzzzzzzzzzzzzzzzzzzzzzzz";
/*var rawmsg = '<message id=""><gcm xmlns="google:mobile:data">"to":"' + receiver + '", "message_id":"m-xxxx123", "data": "hello":"world", "time_to_live":600, "delay_while_idle": true, "delivery_receipt_requested": true </gcm></message>';
var msg = ltx.parse(rawmsg);*/
var msg = new xmpp.Element('message', id: '').c('gcm', xmlns: 'google:mobile:data').t(JSON.stringify(
to: receiver,
message_id: 'm-xxxx123',
time_to_live: 600,
delay_while_idle: true,
delivery_receipt_requested: true
));
xmppClient.send(msg);
............
............
这就是 'stanza's 事件的回应。
........","message_id":"m-xxxx123","error":"BAD_REGISTRATION","error_description":""' ],
【问题讨论】:
【参考方案1】:根据documentation,这里是您的错误的可能原因。
注册令牌无效
检查您传递给服务器的注册令牌的格式。确保它与客户端应用从 GCM 注册时收到的注册令牌匹配。不要截断或添加其他字符。
发件人不匹配
注册令牌与特定的发件人组相关联。当客户端应用注册 GCM 时,它必须指定允许哪些发件人发送消息。在向客户端应用程序发送消息时,您应该使用其中一个发件人 ID。如果您切换到其他发件人,现有的注册令牌将不起作用。
【讨论】:
以上是关于Node.js xmpp 客户端收到“BAD_REGISTRATION”错误作为消息响应的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 node.js 和 node-xmpp 连接到 GTalk
无法使用 Node.js + XMPP 接收上游 GCM 消息
为啥选择 XMPP 而 Node.js 和 WebSocket 都可用? [关闭]