使用開源ntfy訊息推送服務釋出通知實現全平臺接收通知

VinciYan發表於2024-07-02

說明:

  • ntfy原始碼:https://github.com/binwiederhier/ntfy.git
  • 官方未編譯Windows版本,本人編譯最新版本:(連結:https://pan.baidu.com/s/1pMsfqNb5FKHawTLUBTgjQA?pwd=f84u提取碼:f84u)
  • 服務部署系統:Windows Server 2019或其他Windows系統

簡介

ntfy是一個開源的訊息通知服務,旨在簡化訊息釋出和訂閱的過程。它支援在各種平臺上傳送和接收通知,比如桌面、移動裝置和命令列。以下是關於ntfy的一些基本介紹和使用方法

特性

  • 跨平臺支援:可以在Windows、macOS、Linux、Android和iOS上使用
  • 多種傳輸方式:支援HTTP和WebSocket協議
  • 靈活的訊息格式:可以傳送純文字、JSON以及其他格式的訊息
  • 訂閱機制:支援透過主題進行訂閱,使用者可以選擇接收特定主題的通知
  • 整合能力強:可以與各種自動化工具、指令碼語言和開發語言整合,比如Bash、Python、Java、JS、Go和.NET等

應用場景

系統監控和報警

ntfy可以用於監控伺服器和應用的狀態,當出現異常情況時即時傳送通知

示例:

  • 伺服器當機通知
  • CPU 使用率過高警報
  • 磁碟空間不足通知

安全事件通知

ntfy 可以用於安全事件的即時通知,如檢測到可疑登入、未授權訪問等

示例:

  • 可疑登入嘗試通知
  • 檔案系統變更通知

應用程式事件通知

ntfy可以用於應用程式內部事件的通知,如使用者註冊、訂單生成等

示例:

  • 新使用者註冊通知
  • 新訂單生成通知

個人提醒和任務管理

ntfy也可以用於個人的提醒和任務管理,幫助使用者按時完成任務

示例:

  • 日程提醒
  • 任務到期通知

IoT裝置通知

ntfy可以用於物聯網裝置的狀態通知和報警,比如溫度感測器、煙霧報警器等

示例:

  • 溫度過高報警
  • 煙霧檢測報警

啟動服務

ntfy serve --config=server.yml

server.yml

base-url: "http://192.168.8.212:5080"
listen-http: ":5080"
cache-file: "cache.db"
cache-duration: "36h"
attachment-cache-dir: "attachments"

說明:

  • base-url的用處之一就是作為附件訪問路徑字首,比如上傳的附件的下載連結為“http://192.168.8.212/file/OxtNu3vtGFpT.jpg”,“/file”之前就是base-url

啟動服務,瀏覽器開啟“http://192.168.8.212:5080/”

傳送第一個訊息

訂閱主題

釋出通知

釋出含附件的通知

安卓手機接受通知

下載客戶端

Google應用商店或者F-Droid下載安卓客戶端“ntfy - PUT/POST to your phone”

訂閱通知

【設定】,修改【預設伺服器】為私人部署伺服器

右下角加號,訂閱主題,主題名稱填寫“test”

.NET專案釋出通知

除了C#語言,其他語言比如,Go、Python、JS、Java、PHP和Rust等開發語言能都很方便使用ntfy釋出通知,檢視文件Projects + scripts如下

新建.NET 6.0控制檯應用程式

NuGet安裝ntfy v0.5.0

Program.cs

using ntfy.Actions;
using ntfy.Requests;
using ntfy;
namespace ConsoleApp1
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            // Create a new client
            var client = new Client("http://192.168.8.212:5080");
            // Publish a message to the "test" topic
            var message = new SendingMessage
            {
                Title = "This is a demo.",
                Actions = new ntfy.Actions.Action[]
                    {
                        new Broadcast("label")
                            {},
                            new View("開啟百度", new Uri("http://www.baidu.com"))
                            {}
                    }
            };
            await client.Publish("test", message);
        }
    }
}

參考

  • ntfy
  • nwithan8/ntfy-dotnet: A .NET client library to interact with a ntfy server (github.com)

相關文章