Comments (6)
We are, indeed, aware of the issue (I think it first came up in #14). I regret that I don't have a great solution to offer right now, but now that I'm thinking about it more, I'm surprised that SO_KEEPALIVE
doesn't solve this problem for us. Let me investigate that a little more thoroughly.
Cheers!
from pushy.
Thanks for quick response. Actually, I think this is not a Pushy issue but a defect in design of APNS protocol. The lack of successful response makes it almost impossible to detect connection state.
To minimize the risk of writing to a dead connection, I'm going to recreate the connection every, for example, 5 minutes.
Edit: sorry I didn't notice this is already listed in the known issue. But I hope you can keep this open for users to track.
from pushy.
Actually, I think this is not a Pushy issue but a defect in design of APNS protocol.
Agreed, but I'd still like to work around it if we can ;)
Regarding SO_KEEPALIVE
specifically, the problem seems to be that connections have to sit for a really long time (hours by default) before keepalive packets will start flowing. This is configurable at the OS level, but not really on a per-process basis. Lower-level networking stuff can configure the keepalive interval for individual sockets, but that's not really something we can do here (or anywhere in Java, really).
Will keep thinking about it.
from pushy.
With all of the attention SSL heartbeats have been getting lately, it occurs to me that they may also be a viable way to detect link failure, though I am (again) surprised that it's not just happening automatically. I'll admit I know very little about SSL heartbeats, but it seems like an avenue worth exploring.
from pushy.
I am (again) surprised that it's not just happening automatically
Given how APNs is designed to avoid any sort of acknowledgement, I imagine they have SSL heartbeats disabled on their side.
from pushy.
Though we still have no way to detect link failure, #116, #117, and #118 should jointly cover this issue. I regret that we can't do something that offers stronger guarantees.
from pushy.
Related Issues (20)
- Intermittent layer 7 firewall blocks due to missing SNI HOT 2
- Requesting to release a new tag for Live activity support HOT 2
- Failed to create channel java.io.IOException: Connection reset by peer HOT 6
- upgrade the netty-transport from 4.0.37 to 4.1.37 HOT 2
- pushy0.15.0 Stream closed before a reply was received HOT 1
- Connection reset by peer. HOT 3
- ipv6 problem HOT 2
- java.util.concurrent.ExecutionException: io.netty.handler.codec.http2.Http2Exception: Error decoding headers: io/netty/handler/codec/http/HttpHeaderValidationUtil HOT 1
- pushy0.15.2 Stream closed before a reply was received And GOAWAYException HOT 2
- Is the proxy way to replace this? Then a mistake was made
- javax.net.ssl.SSLHandshakeException: Server chose TLSv1, but that protocol version is not enabled or not supported by the client. HOT 5
- Stream closed before write could take place HOT 4
- push 0.15.1 io.netty.handler.codec.http2.StreamBufferingEncoder$Http2GoAwayException in a lot of requests HOT 2
- Support for "apns-unique-id" HOT 1
- return success when send notifacation after uninstalling app HOT 1
- I use Pushy to push the message,then I get "success=true",but the phone not responding HOT 2
- couple of Live Activity issues: stale-date is missing, and relevance-score can now have a value greater than 1.0 HOT 2
- Native SSL provider is available; will use native provider. HOT 4
- ApnsChannelPool java.io.IOException "Failed to create channel - Connection reset by peer" HOT 2
- Network is unreachable: `api.push.apple.com/2620:149:208:4308:0:0:0:a:443` HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pushy.