[Webpush] Time to live for push messages
Martin Thomson <martin.thomson@gmail.com> Fri, 20 February 2015 07:11 UTC
Return-Path: <martin.thomson@gmail.com>
X-Original-To: webpush@ietfa.amsl.com
Delivered-To: webpush@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 01BD61A1A06 for <webpush@ietfa.amsl.com>; Thu, 19 Feb 2015 23:11:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.101
X-Spam-Level:
X-Spam-Status: No, score=-0.101 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eVVxIO95gTu8 for <webpush@ietfa.amsl.com>; Thu, 19 Feb 2015 23:11:57 -0800 (PST)
Received: from mail-ob0-x22a.google.com (mail-ob0-x22a.google.com [IPv6:2607:f8b0:4003:c01::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1A44C1A1A95 for <webpush@ietf.org>; Thu, 19 Feb 2015 23:11:57 -0800 (PST)
Received: by mail-ob0-f170.google.com with SMTP id va2so22590083obc.1 for <webpush@ietf.org>; Thu, 19 Feb 2015 23:11:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=g8ePm41bXwJ3VDY2vuDHMk+X5yxkB2ztfDpDziw255s=; b=ochJW606eyLd1e/yQrumKtcCDDnGgL4FGs2OmATcL1yLnJuwx2ECdTlfPU0thdO/yc cxq9dDstDNA7TxE3PFt6ZQ1/77U2iVwrz7nHnJcXRlg0P29q73wwzmwhP4bPi3ZYxhp0 qH2jTKQkmfajxvGyQ8bTpXj1cj41ww68hACi0MM05er5eGTjTdzUg72s7mSBlJbDsurD M4tIrO85o9/hMB/RcVoJpApyzHdei8vt+D6tqutoNaEqQdX3niETybEJO0O1i2rm0Q/o XMkiLxsgaAFDMUV4+bz4CHhXxBChkXJweM5HmwYwqO0DcZr7dvRcY3fGFuHCeb0LC9cg rIqg==
MIME-Version: 1.0
X-Received: by 10.202.185.198 with SMTP id j189mr5362053oif.72.1424416316391; Thu, 19 Feb 2015 23:11:56 -0800 (PST)
Received: by 10.202.225.135 with HTTP; Thu, 19 Feb 2015 23:11:56 -0800 (PST)
Date: Fri, 20 Feb 2015 20:11:56 +1300
Message-ID: <CABkgnnX6rGfY99YX1RC+mxwAsVw0=gC1wjyZGCpZ3h+QQntehA@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
To: "webpush@ietf.org" <webpush@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <http://mailarchive.ietf.org/arch/msg/webpush/LCvbP2rnVS5J1TRNdk833SRJ-o0>
Subject: [Webpush] Time to live for push messages
X-BeenThere: webpush@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Discussion of potential IETF work on a web push protocol <webpush.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webpush>, <mailto:webpush-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/webpush/>
List-Post: <mailto:webpush@ietf.org>
List-Help: <mailto:webpush-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webpush>, <mailto:webpush-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 20 Feb 2015 07:11:59 -0000
A common problem with push message delivery services looks like this: 1. A push is requested by an application server. 2. The user agent is offline temporarily, so the push service stores the message. 3. The user agent returns long after the event is interesting, but the message is delivered anyway. 4. The user agent acts on a message that is now useless, and which could be harmful. This is particularly annoying for something like a call notification, which might be delivered well after the caller gives up on the call. For these, an application can add its own suppression mechanisms. Though manual suppression introduces a trade-off between risk of showing a dead alert and added latency. Also, there isn't anything that can be done about the battery power that was spent in delivering the useless message. So, most systems implement a suppression system at the push service, where an application server can indicate that a message should not be delivered after some point in time. (I've seen one with suppression that occurs only at the client, but that was spectacularly unsuccessful.) The trick here is in working out how to express this. I see a few options: A. RFC 4918 describes a Timeout header field, which has semantics that apply only to the LOCK method. That could be extended to apply to PUT. B. A new header field could be defined to carry the information. This would have the same semantics as the above. C. We could start to explore message payloads. I prefer the header field options, with a slight preference for reusing Timeout (even if that means updating RFC 4918). The precise semantics would need a little work, but here's a straw man outline: The Timeout header field applies to unsafe requests only. The client indicates that changes to the state of a resource as a result of processing the request are to be reset after the described interval elapses. The state that the resource is reset *to* is undefined, for a number of reasons: not all resources will know and support this header field, some changes might be irreversible, servers are always free to set the state of a resource to whatever they like, and it would be nice to avoid the complexity of having multiple interacting layers of timeout. You will note that this is compatible with the definition of Timeout as defined in RFC 4918, including the fact that the server can do nothing with the lock at the timeout expiration time. The final consideration here is whether this is something that needs to enter the core specification, or whether it would be better as a separate specification. I have no opinion on that.
- [Webpush] Time to live for push messages Martin Thomson
- Re: [Webpush] Time to live for push messages Costin Manolache
- Re: [Webpush] Time to live for push messages Costin Manolache
- Re: [Webpush] Time to live for push messages Martin Thomson