Messages forwarding

The messages handled by the application or by a scene can be forwarded to arbitrary remote hosts. A filtering mecanism can be used to have a fine control of forwarded messages.

Remote hosts list

Remote hosts lists can be set using the forward message at scene or application level. Hosts lists of the application and of each scene are independent. At scene level, only messages handle by the scene are forwarded (ie message for the scene itself or for one of his children object). The forward message itself can't be forwarded. A message from a host cannot be forwarded to him to avoid direct loop.

ITLMsgForward
  • 1) removes the set of forwarded destinations,
  • 2) set a list of remote hosts for forwarding.
ForwardDest

The forwarding mechanism can use different protocols, expressed by the destination in the form of an url, optionally followed by a port number separated by a semi-colon. By default, when no port number is specified, the default application listening port number is used (7000).

  • 1) obsolete form preserved for compatibility: it's equivalent to 2).
  • 2) messages are forwarded using the OSC protocol.
  • 3) messages are forwarded in textual form using the HTTP protocol.
  • 3) messages are forwarded in textual form using the HTTPS protocol. See section SSL about additional requirements for encrypted connections.
  • 5) messages are forwarded in textual form using WebSockets.

Example Forwards messages at application level to host1.adomain.org using OSC and the default application listening port number (7000) and to host2.adomain.org using HTTP on port number 5100 .

/ITL forward osc://host1.adomain.org http://host2.adomain.org:5100;

SSL support

When you use https as a communication protocol, a digital certificate and an encryption key are required to establish connections between INScore and the client stations. The certificate must be signed by a trusted certificate authority. Short term certificates are freely available on the internet.

Before issuing a forward message on an encrypted communication channel, the key and certificate must be loaded by INScore. For this purpose, a set of messages is provided by the application ssl node /ITL/ssl:

SslSetup
  • key load 'file' as private key
  • cert load 'file' as digital certificate
  • cacert load 'file' as intermediate certificate used as certificate authority

file is a path to a file that can be absolute or relative. Resolution of relative paths differs from the approach used with rootPath: a path expressed as relative will always refer to the .ssh folder located at the root of the user directory ($HOME).

Filters

The messages forwarded to arbitrary remote hosts using the forward message can be filtered to send only wanted messages. The static filter node is use manage the filter. A static filter node is created for each scene and one at application level. The filter can be construct with OSC address and messages.

ITLFilteringForward
  • 1) Replace the current accepted list by the new list or by an empty list. Item in accepted list are not filtered by the reject item list.
  • 2) Replace the current accepted list by the new list or by an empty list. Item in reject list are filtered if they not match the accept list.

When a new message is incoming, if they match to an accepted item, filter is not apply.

Example Filter at application level :

/ITL/filter reject /ITL/scene/line* /ITL/scene/rect; 
/ITL/filter accept /ITL/scene/line2 scale arrows;

Messages with address starting with /ITL/scene/line or addressed to /ITL/scene/rect are filtered only if message address is not /ITL/scene/line2 or if the content is not scale or arrows.

Filter at scene level :

/ITL/scene1/filter reject fontWeight /ITL/scene1/rect;

The fontWeight message and message for /ITL/scene1/rect are rejected.

Note: INScore is message based in a consistent way: all actions are triggered by messages (including, for example, quitting the application). Some messages are generated internally. This is the case of ddate: an object sends ddate messages to itself when its tempo is not zero. It is therefore recommended to filter ddate: in the absence of a filter, a recipient who receives a tempo message will generate these messages internally, but will also receive those that have been forwarded. Its actual tempo will then be twice the one set.

Specific queries

When using connection oriented protocols with the forward message (http, https, ws), you can query the number of connected clients:

ITLClientsQuery

The message must be addressed at the application level (/ITL). The answer is detailed for each type of connection-oriented protocol in service.