主な目標は、Web通知を送信してシステム通知をポップアップし、Html5 Push APIおよびサービスワーカーを使用してユーザーに警告する機能をサイトに追加することです。サイトが開かれている間のみクライアントスクリプトを実行できるSignalRを使用しない。前述のように、サイトが閉じられた場合に通知を送信する機能も必要です here -可能です。
ここ はPush APIに関する優れた記事であり、優れた情報を提供します 例 しかし、NodeJSをサーバーとして使用し、 web-Push コンポーネントを使用してリクエストを通知サービスに送信します。
.NETの例が見つかりません。 2つの回避策について考えます。
まず、Push APIの記事に基づいてすべてをゼロから作成することです 注 サーバーについて:
データなしでプッシュメッセージを送信する場合、HTTP POSTリクエストを使用してエンドポイントURLに送信します。ただし、プッシュメッセージにデータが含まれる場合は、暗号化する必要があります。複雑なプロセス。
次に、AspNetCore.NodeServices( article about it)を使用してnode.jsスクリプトファイルを実行する
他に解決策はありますか?たぶんこのための準備ができたソリューションが存在しますか?
主題研究の後
3件:
new Notification('Message')
を使用してjsでネイティブブラウザー通知をトリガーする複雑になりました。なにが問題ですか?
可能な解決策:
1および2のケースが見つかった場合 this repository。優れたフォールバックサポートを備えた優れたフロントエンドソリューションだと思います。 3ケースについては、まだ何をすべきかわかりません。
現在の解決策。追加:2017-11-22
言及したノードライブラリは、c#: web-Push-csharp に移植されています。
サイトから直接取得した簡単な使用例を次に示します。
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);
}