Specifications
Shared Variables
97
AMX InspiredSignage XPress Programming Guide
Shared Variables
Introduction
The IS-SPX-1000 introduces a new mechanism called “shared variables”. This mechanism is based on a
client/server model whereby a server maintains a collection of variables. The value of the variables may be
updated at any time. When needed, one or more clients connect to the server to get the current value of the
variables. The client can further elect to receive real-time notification when the value of those variables is
updated.
The client and the server might be located on the same physical host. In this case, the shared variables are used
to share information within documents. For instance, this can be used to generate interactive menus. The server
might be a remote PC or another IS-SPX-1000. In this case the shared variables can be used to trigger many
types of events on the IS-SPX-1000, such as changing the content displayed by the player, displaying a
message on the screen, or the real time update of news feeds.
Concepts Behind Shared Variables
The operation of notifying the server of the list of variables for which notification is desired is called a
“subscription”. Clients may subscribe and unsubscribe to variables at any time. When a client first subscribes
to a variable and this variable already has a value, it will immediately receive a notification with the current
value. Subsequently, the client will receive notifications each time the value has been updated, regardless of
whether the value is actually different from what it was before.
The update notification always carries an absolute UTC timestamp that may be used to synchronize the action
of multiple clients on a variable update. This publish and subscribe mechanism resembles the “messaging”
feature of enterprise application frameworks with the exception that due to the real-time orientation only the
most up to date value of a variable is distributed, so some notifications may be dropped if a newer update is
available.
It is possible to subscribe to input events (mouse clicks or keyboard inputs) from an IS-SPX-1000. In this case,
all events received by the server will be passed to the client. For instance, it is possible using a keyboard
plugged into an IS-SPX-1000 to control not only the attached player but also other players connected through
the network. The special subscription variable “%EVENTS%” will cause event notifications to be sent instead
of updates.
Javascript API
Shared variables are meant to be used with the JavaScript and NetLinx programming languages.
Interface
interface SharedVariable {
readonly attribute DOMString name;
readonly attribute DOMString value;
readonly attribute float lastUpdateTime; // milliseconds since Jan
1st 1970 UTC
void set( DOMString newValue );
void addUpdateListener( UpdateListener listener );
void removeUpdateListener( UpdateListener listener );
};
void UpdateListener( SharedVariable var );
interface SVGGLobal {
SharedVariable createSharedVariable( DOMString name );
};
The main API is the global createSharedVariable function, which is used both to create a local variable and to
connect to a remote one.