-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Retransmission is not specified #34
Comments
Adding on to this, what does the push server tell the app server when the distributor/end-user device is temporarily gone. binwiederhier suggested |
|
Branching off binwiederhier/ntfy#609 (comment):
me:
@binwiederhier @iNPUTmice @p1gp1g @MayeulC What do y'all think? In addition to |
I have a very narrow scope for my use case (subscriber-based rate limiting in ntfy, and rejecting messages without subscribers), much narrower than the one in this ticket. So I fear my user case may not be the same as the other one. That said, for my use case, I think I now believe HTTP 409 is the correct code:
(emphasis mine) In the case of ntfy, the "target resource" is the topic, and the "conflict with the current state" is that there is no subscriber connected, and we cannot forward the message. -- As for the general "how do you handle retries" question, the HTTP spec has a Retry-After header the server can respond with that may define retries from the app server. (It is worth noting that ntfy caches messages for 12h and that they will be transmitted to a subscriber if no-one is connected. Not sure if that solves the problem) -- (Timeliness note: UP is currently one of the blockers to release my ntfy SaaS offering, so I am eagerly waiting for the implementation of binwiederhier/ntfy#609. I am willing to wait a week or so, but not forever :-) I am well aware that I've been slacking with the review before @karmanyaahm. My apologies for that, and for the rush. It's just been so long and I wanna finally go live.) |
My XMPP based distributor doesn’t know if the recipient is temporarily offline. Messages can be on their way for ~5 minutes. And that’s valid (and probably expected?) according to WebPush as far as I understand the RFC. Rate limiting or "client used up all the storage" or something like that can be handled with 429 + Retry-After or similar. Edit: 201 rather… |
TTL/Status codewhen the push server can forward the message If we do not use
So I see 2 solutions for UnifiedPush:
IMO: Rate limitI think the 429 behavior is adapted
Other questionsI can't see 2 things in the spec:
-> Maybe we should look at the existing webpush server what their behavior for this 2 questions. IMO:
|
(Sidebar: I feel like my ntfy problem is almost entirely distinct, @karmanyaahm; maybe this is the wrong place for the discussion after all?) |
I'm a bit out-of-the-loop on WebPush, as I haven't had time to read the specs, so I apologize if my answer is useless. From what I understand from your messages here, |
See: https://codeberg.org/iNPUTmice/up/issues/1
How are we handling retries? Should we implement RFC8030's TTL? If so, should it be a MUST not deliver after time or SHOULD not deliver after time (i.e. is TTL a required feature)?
One possible solution from @iNPUTmice:
A push server that implements storage and multiple delivery attempts SHOULD implement the TTL and Topic headers from RFC 8030. According to RFC 8030 §5.2 a push service MAY retain a push message for a shorter duration than requested; since this value can be 0 a push server that does not store messages is still a valid WebPush service. Push servers that do not implement storage MUST include a TTL: 0 header in the response.
The text was updated successfully, but these errors were encountered: