你好。
我看了你的【基于Apns最新HTTP/2接口实现ios的高性能消息推送(服务端)篇】的文章,我按照你文章中给的例子,再main方法 中测试代码,出现了Stream closed before a reply was received。麻烦指导一下,万分感谢。
测试工程代码地址:
链接:https://pan.baidu.com/s/1CpVx0ojOYW2aQtOwH6tWmg
提取码:qjse
错误日志如下:
[id: 0x55441210] RECEIVED: [12642: /172.16.1.251:53], DatagramDnsResponse(from: /172.16.1.251:53, to: /0:0:0:0:0:0:0:0:53271, 12642, QUERY(0), NoError(0), RD RA)
DefaultDnsQuestion(api.sandbox.push-apple.com.akadns.net. IN AAAA)
DefaultDnsRawRecord(akadns.net. 180 IN SOA 54B)
DefaultDnsRawRecord(OPT flags:0 udp:4000 0B)
[DEBUG] 2019-05-17 13:25:30,679 method:io.netty.handler.ssl.SslHandler.setHandshakeSuccess(SslHandler.java:1746)
[id: 0x05db604f, L:/172.16.2.32:55833 - R:api.development.push.apple.com/17.188.166.29:443] HANDSHAKEN: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
Failed to send push notification.
java.util.concurrent.ExecutionException: java.io.IOException: Stream closed before a reply was received
at io.netty.util.concurrent.AbstractFuture.get(AbstractFuture.java:41)
at com.test.IOSPush4.push(IOSPush4.java:103)
at com.test.MainTest.main(MainTest.java:11)
Caused by: java.io.IOException: Stream closed before a reply was received
at com.turo.pushy.apns.ApnsClientHandler.<clinit>(ApnsClientHandler.java:79)
at com.turo.pushy.apns.ApnsClientHandler$ApnsClientHandlerBuilder.build(ApnsClientHandler.java:135)
at com.turo.pushy.apns.ApnsClientHandler$ApnsClientHandlerBuilder.build(ApnsClientHandler.java:88)
at io.netty.handler.codec.http2.AbstractHttp2ConnectionHandlerBuilder.buildFromCodec(AbstractHttp2ConnectionHandlerBuilder.java:420)
at io.netty.handler.codec.http2.AbstractHttp2ConnectionHandlerBuilder.buildFromConnection(AbstractHttp2ConnectionHandlerBuilder.java:413)
at io.netty.handler.codec.http2.AbstractHttp2ConnectionHandlerBuilder.build(AbstractHttp2ConnectionHandlerBuilder.java:381)
at com.turo.pushy.apns.ApnsClientHandler$ApnsClientHandlerBuilder.build(ApnsClientHandler.java:142)
at com.turo.pushy.apns.ApnsChannelFactory$1$1.operationComplete(ApnsChannelFactory.java:149)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:502)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:495)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:474)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:415)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:540)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:529)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:101)
at io.netty.handler.ssl.SslHandler.setHandshakeSuccess(SslHandler.java:1743)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1412)
at io.netty.handler.ssl.SslHandler.decodeNonJdkCompatible(SslHandler.java:1239)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1276)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:617)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:534)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Unknown Source)
[INFO ] 2019-05-17 13:25:31,112 method:com.test.IOSPush4.push(IOSPush4.java:169)
test pushMessage success. [共推送1个][成功0个],totalcost= 11921, pushCost=11016