首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS APN推送重复通知

NodeJS APN推送重复通知
EN

Stack Overflow用户
提问于 2014-03-18 12:21:29
回答 1查看 537关注 0票数 0

伙计们,我最近正在尝试使用nodejs作为第三方APN服务器,并且我正在使用node-apn模块(https://github.com/argon/node-apn)。当我在短时间内推送相同的通知(我的意思是,相同的警报)(比如5分钟内发送5个通知)时,我发现苹果的APN服务器似乎‘缓存’了我的通知,之后,当我正常推送另一条消息(正常速度,比如5分钟一条消息)时,‘缓存’的消息会一次又一次地出现在我的设备上。

我深入研究了node-apn模块的代码,发现它为苹果创建了一个TLS(SSL),并将一个流数据(在nodejs中是一个缓冲区)发送到苹果的服务器,看起来一切正常,但消息只是复制的(当我在短时间内推送它们时)。我还对Python的lib APNSWrapper(https://code.google.com/p/apns-python-wrapper)进行了另一次尝试。代码只是做同样的事情,问题就不会出现了。

他们发送到苹果服务器的内容是一样的,包括:

[command, token.length, token.content, payload.length, payload.content]

命令、token.length和payload.length在big-endian中是双字节无符号整型。python lib使用!HB32s58s格式构造整个流,32和58只是长度。好了!表示big-endian,H表示无符号字符(1字节),B表示无符号整数(2字节)。32s表示32字节的字符串,58表示58字节的字符串。

nodejs tls连接也在做同样的事情,所有的长度都是用cleartextStream.writeUInt16BE()写的,这里的BE表示大端。

我一字节一字节地测试了它们发送的内容是一样的。我甚至创建了一个SSL服务器来接收他们的消息,并且我接收到了相同的数据(还逐个字节地进行了检查)。因此,苹果服务器收到的内容应该是完全相同的。但它们只是有不同的行为。我在这里等待任何建议,提前谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-10-29 16:54:06

要确保您不会传输两次,请尝试以下操作:

代码语言:javascript
复制
apnConnection.on('transmitted', function(notification, device) {
  console.log("Notification transmitted to:" + device.token.toString('hex'));
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22470318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档