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
}

最終更新