說明:
- 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)