notification net asp c# asp.net-core asp.net-core-webapi web-push push-api

c# - notification - Asp Net Core Web Notificaciones Push



signalr sql server notification (1)

La biblioteca de nodos que menciona se ha portado a c #: web-push-csharp .

Aquí hay un ejemplo de uso simplificado tomado directamente de su sitio:

var pushEndpoint = @"https://fcm.googleapis.com/fcm/send/efz_TLX_rLU:APA91bE6U0iybLYvv0F3mf6uDLB6...."; var p256dh = @"BKK18ZjtENC4jdhAAg9OfJacySQiDVcXMamy3SKKy7FwJcI5E0DKO9v4V2Pb8NnAPN4EVdmhO............"; var auth = @"fkJatBBEl..............."; var subject = @"mailto:[email protected]"; var publicKey = @"BDjASz8kkVBQJgWcD05uX3VxIs_gSHyuS023jnBoHBgUbg8zIJvTSQytR8MP4Z3-kzcGNVnM..............."; var privateKey = @"mryM-krWj_6IsIMGsd8wNFXGBxnx..............."; var subscription = new PushSubscription(pushEndpoint, p256dh, auth); var vapidDetails = new VapidDetails(subject, publicKey, privateKey); var webPushClient = new WebPushClient(); try { webPushClient.SendNotification(subscription, "payload", vapidDetails); } catch (WebPushException exception) { Console.WriteLine("Http STATUS code" + exception.StatusCode); }

El objetivo principal es agregar a la capacidad del sitio el envío de notificaciones web para abrir una notificación del sistema para alertar al usuario mediante el uso de la API Html5 Push y los trabajadores de servicio. No usar SignalR, que solo puede ejecutar scripts de cliente mientras el sitio está abierto. También debería ser posible enviar notificaciones si el sitio está cerrado, como se menciona here , es posible.

Here es un buen artículo sobre la API Push y un buen example Pero utiliza NodeJS como servidor y componente web-push para enviar solicitudes a los servicios de notificación.

No puedo encontrar ningún ejemplo de .NET. Pienso en las dos soluciones.

Primero, es escribir todo desde cero basado en la note artículo de Push API sobre el servidor:

Cuando envía un mensaje push sin datos, simplemente lo envía a la URL del punto final mediante una solicitud HTTP POST. Sin embargo, cuando el mensaje de inserción contiene datos, debe cifrarlos, lo que es un proceso bastante complejo.

En segundo lugar, es utilizar AspNetCore.NodeServices ( article respecto) para ejecutar el archivo de script node.js

¿Hay más soluciones? Tal vez exista una solución lista para esto?

Después de investigar el tema

3 casos:

  1. HTTP + navegadores antiguos + todas las versiones de IE - Use la notificación de renderización de SignalR + usando html + js
  2. HTTP + Navegadores modernos (Chrome, Firefox, Safary, Opera, Edge) con soporte de Notification API. - Use SignalR y active la notificación del navegador nativo con js usando la new Notification(''Message'')
  3. HTTPS + Chrome (Mobile) con soporte de Push API para activar la notificación nativa para el sitio cerrado utilizando trabajadores de servicio. La versión móvil de Chrome puede crear notificaciones solo mediante el uso de service-worker.

Se ha vuelto complicado. ¿Qué está mal?

Soluciones posibles:

Para 1 y 2 casos encontramos this repositorio. Piensa que es una buena solución frontal con un buen soporte de respaldo. Por 3 caso todavía no sé qué hacer.

Solución actual. Añadido: 2017-11-22

  • No hay soporte para notificaciones de clientes sin conexión
  • Sin soporte móvil
  • Para Chrome v62 + mover todos los proyectos a https - link
  • Uso de SignalR (0.2.0) para enviar notificaciones a clientes en línea
  • Usando pnotify v3 + para mostrar las notificaciones nativas de desctop o html.
  • En espera de pnotify v4.0.0 (el autor promete el soporte móvil de Chrome. Issue )
  • En espera de .NET Core 2.1 con SignalR 1.0 para reescribir todo el proyecto.