The Diffusion Intelligent Event Data Platform synchronizes, manages, and distributes data among applications, devices, and systems – via the web, mobile, and satellite networks.
Connections are maintained via a session which authenticates, subscribes, publishes,
manages connectivity, queues data, resolves reconnection discrepancies, etc. To detect connectivity, both the Diffusion server and individual sessions send heartbeat messages. When no network activity is detected within a specified timeout, a session is placed in a disconnected state.
A device, application, or system uses a Diffusion SDK to communicate with the main Diffusion server. When the SDK detects connectivity to the Diffusion server is lost, the user is notified. Any in-flight messages at the time of disconnection are buffered by the session and any subsequent operations will be failed with an explicit warning to the user that there is no connection to the Diffusion server.
Upon detection of session connection loss, the Diffusion Server also buffers all in-flight messages for the session; plus, all subsequent post-disconnection messages for the session, such as topic updates, are queued. The choice of how long the Diffusion Server maintains a disconnected session queue and how many messages are queued, is configurable by the Diffusion server administrator.
A Diffusion session will automatically attempt to periodically reconnect with the
same Diffusion Server to which it was originally connected. The reconnect attempt frequency (e.g. periodic reconnect or exponential back-off) and the allowable disconnect state time period are configurable by the SDK user. When the session re-establishes a connection, the session and Diffusion server perform a protocol handshake and automatically resolve any missed in flight messages on either side. The Diffusion server then sends any queued messages to the session, in order to fully synchronize the session data.
Upon reconnection, a session will notify users that it is safe to continue with normal operations. All session state is preserved, so no explicit reconnection operations by the user are required.
In the event that a session is unable to reconnect within the user selected timeout period, the session will transition to the terminal “Closed” state from which no further operations may be performed.
Diffusion assures companies can easily develop reliable applications to effectively address the challenges of data synchronization, management, and distribution that inevitably arise across imperfect networks.