Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NodeJS APN推送重复通知_Python_Ios_Node.js_Ssl_Apn - Fatal编程技术网

Python NodeJS APN推送重复通知

Python NodeJS APN推送重复通知,python,ios,node.js,ssl,apn,Python,Ios,Node.js,Ssl,Apn,伙计们,我最近尝试使用nodejs作为第三方APN服务器,我正在使用node APN module()。当我在短时间内推送相同的通知(我的意思是,相同的警报)(如5分钟内推送5个通知)时,我发现苹果的APN服务器似乎“缓存”了我的通知,之后,当我正常推送另一条消息时(以正常速率,如5分钟一条消息),“缓存”消息将一次又一次地出现在我的设备上 我对node apn模块的代码进行了深入研究,发现它创建了一个TLS(SSL)到苹果,并向苹果的服务器发送了一个流数据(这是nodejs中的一个缓冲区),一

伙计们,我最近尝试使用nodejs作为第三方APN服务器,我正在使用node APN module()。当我在短时间内推送相同的通知(我的意思是,相同的警报)(如5分钟内推送5个通知)时,我发现苹果的APN服务器似乎“缓存”了我的通知,之后,当我正常推送另一条消息时(以正常速率,如5分钟一条消息),“缓存”消息将一次又一次地出现在我的设备上

我对node apn模块的代码进行了深入研究,发现它创建了一个TLS(SSL)到苹果,并向苹果的服务器发送了一个流数据(这是nodejs中的一个缓冲区),一切似乎都正常,但消息只是重复(当我在短时间内推送它们时)。我还尝试了Python的lib apnswraper()。代码只是做同样的事情,问题不会出现

它们发送到苹果服务器的内容完全相同,包括:

[命令,token.length,token.content,payload.length,payload.content]

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

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


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

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

apnConnection.on('transmitted', function(notification, device) {
  console.log("Notification transmitted to:" + device.token.toString('hex'));
});