Embedded Sync Server
How to set up an ObjectBox Sync server that is embedded in your application.
This page refers to the embedded sync server, not the standalone sync server. Usually, you want to use the standalone server.
Free Data Sync trials are currently available for Standalone Servers only.
However, for commercial use cases, we do offer embedded servers in all of the ObjectBox language bindings (Java, Kotlin, C/C++, Flutter/Dart, Go, Swift).
Use a Sync server library
Java (Android/Linux)
By now, you were likely in touch with the ObjectBox team and were given Sync Server library artifacts. To use them in a Gradle project they have to be included as a local binary dependency. And the ObjectBox plugin has to be prevented from adding conflicting dependencies.
Copy the AAR and JAR files to the <module_name>/libs
directory (the path is relative to the build.gradle
file), then modify build.gradle
:
Start a Sync server
Use Sync.server(boxStore, url, authenticatorCredentials)
to start a Sync server using a boxStore
. The server binds to the address and port given in url
.
When using wss
as the protocol of the url
a TLS encrypted connection is established. Use certificatePath(path)
to supply a path
to a certificate in PEM format. Use ws
instead to turn off transport encryption (insecure, only use for testing!).
authenticatorCredentials
are required to authenticate clients. It is possible to add more than one set of allowed credentials.
During buildAndStart()
the server will start and become ready to accept connections from clients. Read below for more configuration options you can use before starting the connection.
Client authentication
These are the currently supported options to authenticate clients:
Shared secret
This can be any pre-shared secret string or a byte sequence.
Google Sign-In
Not available, yet.
No authentication (insecure)
Never use this option to serve an app shipped to customers. It is inherently insecure and allows anyone to access the sync server.
For development and testing it is often easier to just have no authentication at all to quickly get things up and running.
Manually start
Using the example above, the server automatically binds to the given address and port and starts listening for clients. It is also possible to just build the server and then start it once your code is ready to.
Note that a started server can not be started again. Stop and close an existing server and build a new one instead.
Advanced
Listening to incoming data changes
For advanced use cases, it might be useful to know exactly which objects have changed during an incoming sync update. This is typically not necessary, as observing a box or a query may be easier.
To listen to these incoming data changes:
On each sync update received on the server, the listener is called with an array of "Sync Change" objects, one for each affected entity type. It includes a list of affected object IDs - the ones that were put or removed in the incoming update.
Adding peer servers
Before using peer servers, please reach out to the ObjectBox team.
It is possible to have multiple sync servers for redundancy and load balancing where one or more secondary servers connect as special clients to a primary server.
To add the primary server when building a secondary server:
Last updated