Web Push as a way to ingest messages
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza leyendo el WebKit Declarative Web Push explainer, RFC 8030, RFC 8292, el Web Push encryption draft y los artículos generales enlazados. No se han identificado archivos de implementación ni pruebas; para considerar el trabajo terminado sería necesario definir el alcance de las suscripciones, la autenticación, el cifrado de mensajes y el mapeo propuesto de campos de mensajes antes de poder verificar la implementación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Web Push provides standardized means not only for web clients to subscribe to and receive messages, but for servers to send them.
Previously, the subscription mechanism and the authentication mechanism servers would use were well-defined. Recent developments have also resulted in the actual message format moving to a standardized format, pushed by WebKit. The feature is available in the latest version of Safari Technology Preview.
I propose supporting Web Push in gotify - as a way of ingesting messages in a standardized way, making gotify compatible with existing and future Web Push-aware servers, meaning users of said applications could use gotify without dedicated support in the applications themselves.
In the normal Web Push flow, a user would request a subscription via their browser vendor's infrastructure. In this case, my suggestion is for gotify to act as that vendor. By letting users create a Web Push subscription via gotify, they could get the same reply from gotify as they would from their browser, letting them set up their applications to send messages to gotify.
Gotify would then receive messages from the services and respond like a Web Push server, supporting the subset of features that is mandated and makes sense in gotify's context.
As for the message format, I propose to use the format specified by WebKit, moving towards standardization: https://github.com/WebKit/explainers/blob/main/DeclarativeWebPush/README.md. W3C discussion
Useful article for an overview of Web Push: https://web.dev/articles/push-notifications-web-push-protocol.
Relevant RFCs and articles
- Generic Event Delivery Using HTTP Push - https://datatracker.ietf.org/doc/html/rfc8030
- Voluntary Application Server Identification for Web Push - https://datatracker.ietf.org/doc/html/rfc8292
- Web Push encryption - https://datatracker.ietf.org/doc/html/draft-ietf-webpush-encryption-06
- https://web.dev/explore/notifications
Message field mapping
Below is a rough field mapping between Gotify's current message format and the message format proposed for Web Push. Note that there are additional fields in the proposed Web Push format that could be used for features like the image URLs, android actions, but they would likely not be supported by Web Push-compatible servers without additional work on their end.
{
"title": "My title",
"message": "My message",
"extras": {
"client::display": {
"contentType": "text/plain"
},
"client::notification": {
"click": {
"url": "https://gotify.net"
},
"bigImageUrl": "https://placekitten.com/400/300",
},
"android::action": {
"onReceive": {
"intentUrl": "https://gotify.net"
}
}
}
}
{
"title": "My title",
"options": {
"body": "My message"
},
"default_action_url": "https://gotify.net"
}
- Lenguaje dominante
- Go
- Estrellas
- 16k
- Forks
- 878
- Merge medio
- 2 d 15 h
- PR fusionados (30 d)
- 5
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de gotify/server
-
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
-
a:bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
-
a:feature
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
-
Session elevation duration is unbounded, and large values silently overflow to a past timestampAbiertoa:bug
Dificultad 3/5 1-2 días Aptitud para principiantes 78/100
-
a:bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Todos los issues de gotify/server
Issues similares
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
priority/4/normal status/needs-triage type/bug/unconfirmed
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
authelia/authelia#13292 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
blinklabs-io/actions#138 ·
Los mantenedores suelen responder en 1 día
-
[UI] AlbumDetails collapses multi-genre list to single primary genre on viewports < lg breakpointAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día