For the complete documentation index, see llms.txt. This page is also available as Markdown.

Notifier モジュールをサーバーでセットアップする

概要

Notifier モジュールは、TCP、UDP サーバー上でセットアップをすることが可能です。

Notifier モジュールを利用する際は HTTP 以外すべてのサーバーでセットアップする必要があります。

セットアップ

クライアントにビルトイン・コマンドを公開するには、 diarkisexec パッケージを利用してセットアップできます。

以下の様にサーバーの main 関数に追加します。以下は UDP サーバーでセットアップするサンプルです。diarkisexec の setup 関数は diarkisexec.StartDiarkis() を呼ぶ前に実行する必要があります。

また、diarkisexec.SetupNotificationService(name, interval, callback) にてメッセージを一斉送信する間隔や内容を設定する必要があります。

詳細は diarkisexec の API リファレンスを参照して下さい。

package main

import "github.com/Diarkis/diarkis/diarkisexec"

func main() {
	logConfigPath := "/configs/shared/log.json"
	meshConfigPath := ""

	diarkisexec.SetupDiarkis(logConfigPath, meshConfigPath, &diarkisexec.Modules{
		Notifier:   &diarkisexec.Options{},
	})
	diarkisexec.SetupNotificationService("Notification", 60, handleNotification)
	diarkisexec.SetupDiarkisUDPServer("/configs/udp/main.json")
	diarkisexec.StartDiarkis()
}

func handleNotification() (*diarkisexec.Notification, error) {
	// Retrieve notification data from a database by the current time
	notificationData := someDatabase.GetNotificationDataByCurrentTime(year, month, date)

	if notificationData == nil {
		// No notification data to send out
		return nil, nil
	}

	n := &diarkisexec.Notification{}
	n.ID = notificationData.ID
	n.Name = notificationData.Name

	// Ver is used by the client to identify the message when received.
	n.Ver = notificationData.Ver

	// Cmd is used by the client to identify the message when received.
	n.Cmd = notificationData.Cmd

	n.Message = []byte("Notification message says 'Hello from the server'")

	// TTL is in seconds to indicate the availability of the notification data.
	// The notification will be available for the not-connected-clients for the duration of TTL and
	// will be sent to the clients when they connect before TTL expires.
	n.TTL = int64(60 * 60) // one hour

	return n, nil
}

最終更新

役に立ちましたか?