registerConsumer

[ Funktion ]

public static registerConsumer(
    filter: Filter | null,
    callbacks: {
        list?: (data: Events.ListResult) => void,
        subscription?: (data: Events.SubscriptionResult) => void
}): DestroyFunction | null;

Meldet einen Verbraucher für Server Events an. Ein Verbraucher kann zwei optionale Funktionen angeben: list wird aufgerufen, nachdem der Verbraucher angemeldet wurde oder wenn sich die Lokalisierung ändert, subscription wird aufgerufen, wenn sich Alarme ändern oder neue Events erzeugt werden.

Nur Events die auf den angegebenen Filter passen, werden an den Verbraucher weitergeleitet. Falls nicht gefiltert werden soll, muss null übergeben werden.

Parameter

Name

Typ

Beschreibung

filter

Filter, null

Definiert, welche Events abgefragt werden sollen

callbacks

{

list?: (data: Events.ListResult) => void,

subscription?: (data: Events.SubscriptionResult) => void

}

Ein object, welches die Callback Funktionen, an die empfangene Events übergeben werden, enthält.

Rückgabewert

Typ

Beschreibung

DestroyFunction, null

Eine Funktion, mit der der Verbraucher wieder abgemeldet werden kann. Falls das Anmelden des Verbrauchers fehlschlägt wird null zurückgegeben.

Beispiel – JavaScript

// filter for unconfirmed alarms
var filter = [
    {
        path: 'type',
        comparator: '==',
        value: TcHmi.Server.Events.Type.Alarm
    },
    {
        logic: 'AND'
    },
    {
        path: 'timeConfirmed',
        comparator: '==',
        value: new Date(null)
    }
];

var myAlarms = [];

// function to handle list of events
function consumeEventList(data) {
    if (data.error === TcHmi.Errors.NONE) {
        myAlarms = data.events;
    }
    else {
        myAlarms = [];
    }
}

// function to handle new and changed incoming events
function consumeEventSubscription(data) {
    if (data.error !== TcHmi.Errors.NONE) {
        return;
    }
    if (data.removedByFilter) {
        myAlarms = myAlarms.filter(function (alarm) {
            return alarm.id !== data.event.id;
        });
    }
    else if (data.changeType === TcHmi.Server.Events.ChangeType.AlarmRaised) {
        myAlarms.push(data.event);
    }
    else {
        for (var i = 0; i < myAlarms.length; i++) {
            if (myAlarms[i].id === data.event.id) {
                myAlarms[i] = data.event;
                break;
            }
        }
    }
}

// register a consumer to receive events
var destroyFunction = TcHmi.Server.Events.registerConsumer(filter, {
    list: consumeEventList,
    subscription: consumeEventSubscription
});
registerConsumer 1:

Verfügbar ab Version 1.10