XR Real-time Message Bus
- Last UpdatedJul 16, 2025
- 3 minute read
The XR Real-time Message Bus, often referenced as Message Bus, is a proprietary data exchange technology that enables XR runtime applications to connect and communicate natively. Message Bus can abstract from the actual transport protocol implementation and use both the default embedded high performance communication system or delegate the communications to a plugin.
Plugin based communications have some restrictions, see Message Parameters for further details. The contents of this page refers to default embedded high performance communications.
Connecting to real time Data sources
XR Bridge works as gateway to connect the Message Bus with external runtime data sources, such as:
-
OPC-DA servers
-
Sim4ME servers, such as AVEVA™ Dynamic Simulation
This diagram shows an example of a typical message bus set up for a Plant Simulation Training Project.

Message Bus characteristics
The Message Bus uses TCP (for shares) and UDP (for streams) communications. TCP channel can be encrypted to leverage an extra layer of security.
Message Bus supports multiple ways of setting the symmetric encryption key from the Message.encryption entry:
-
DPAPI (for Windows and WinNX),
-
Keychain (for iOS and Android)
-
Cleartext key setting for specific deployments or testing environments.
Further details can be found in Message parameters.
To communicate, server and clients must have a matching encryption key, which can be protected in any supported way depending on the specific instance platform.
For instance, an iOS instance protecting the encryption key using "keychain:secret" can communicate with a Windows instance protecting the same secret using "dpapi:xERF456fffTASSD", as long as both configurations, when unprotected, produce the same encryption key.
Note: The dpapi key should be encrypted with null or empty entropy.

Being a star-based system, communications happens only when the server is running. The Message Bus does not require any specific startup sequence. Any client node can start and stop at any time (also before the server is started).
When connecting to the server, a client receives a stateZero message, if configured. After connecting, only modified data is passed.
Data synchronization
Message Bus is based on data synchronization. There are two types of data that are synchronized:
-
Share. Represents the 99.9 % of usual exchanged data. A node field declared as shared is kept synchronized by the Message Bus server that receives data modifications and is responsible for dispatching them to all connected clients.
-
Stream. Used in rare and time-constrained situations. Be aware that Stream is broadcast in clear text.
Note: The use of explicit Share (and Stream) declaration forces the application developer to be responsible for the amount of data managed by the Message Bus. Although there's no specific technical limit, less data exchange leads to lower synchronization latency.
Other XR Framework communication functions
Besides the Message Bus, XR Framework is used mostly to manage communication between different XR real-time application instances and supports several other communication technologies, such as:
-
Rest calls. Both push and pull. See Rest and RestServer nodes.
Additionally, you can implement custom specific communications with the XR Bridge channels.
Security Note: Message Bus does not provide data confidentiality from potential cyber attacks. It is strongly advised not to use message bus communication to share credentials or other sensitive data, because communication could be intercepted.