Connect to an Edge Server - Preview
On this page
Once the Edge Server instance is configured and running, you can connect to it from a client application.
There are three ways you can connect to the Edge Server instance from a client:
Atlas Device SDK: Device Sync automatically synchronizes data across devices and with the Edge Server.
MongoDB Drivers and tools: Perform CRUD operations with a subset of supported MongoDB APIs.
MongoDB Compass: Explore documents syncing to an Edge Server instance, and make updates to those documents.
Connect to the Edge Server from Atlas Device SDK
To connect to the Edge Server instance from an Atlas Device SDK client, your app must:
Set the Sync URL on the App configuration to the public-accessible DNS address you set in the Edge Server
edge_config.json
baseURL
field.If TLS is not enabled, use HTTP over port 80.
Tip
While your Edge Server deployment is in development, we recommend connecting with HTTP over port 80 for simplicity. Before moving to production, you can coordinate with your Product or Account Representative to configure HTTPS with a self-signed certificate.
For information about customizing the App configuration, refer to the documentation for your preferred SDK:
C++ SDK: Connect to App Services - C++ SDK
Flutter SDK: Connect to App Services - Flutter SDK
Java SDK: Connect to an Atlas App Services backend - Java SDK
Kotlin SDK: Connect to Atlas App Services - Kotlin SDK
.NET SDK: Connect to an Atlas App Services Backend - .NET SDK
Node.js SDK: Connect to an Atlas App Services Backend - Node.js SDK
React Native SDK: Connect to an Atlas App Services App - React Native SDK
Swift SDK: Connect to an Atlas App Services Backend - Swift SDK
Supported Authentication Providers
Edge Server currently supports the following subset of authentication providers when connecting with an SDK:
Roaming Between Edge Servers
SDK clients can roam between Edge Server instances, or between an Edge Server instance and Atlas.
Roaming requires changing the base URL in the client's App configuration. For details, refer to the SDK documentation linked above.
When an SDK user roams, the client app must perform a client reset upon connecting to the new server. For more information about client resets, refer to Client Resets.
Roaming Users and Anonymous Authentication
When roaming between Edge Server instances or an Edge Server instance and Atlas, anonymous users do not persist across servers. Atlas creates a new anonymous user for each server the client connects to, and does not persist local data across servers.
For all other supported authentication providers, users persist and have access to the expected data across servers.
Example: SwiftUI Template App
For a quick proof of concept using a template app, these are the modifications you can make to the Swift template app to connect to the Edge Server instance:
Configure the Server Connection
In the Swift template app's atlasConfig
, set the values to:
Key | Value |
---|---|
baseUrl | The public-accessible DNS of your Edge Server instance host.
This is http:// , or if TLS is enabled, https:// ,
followed by the IP address exposed in your Edge Server
container configuration. |
appId | The App ID of your App Services App that has Edge Server
enabled. For more information about finding the App ID, refer
to Find Your App ID. |
Adjust the App Transport Security Settings (Optional)
If your app uses TLS, you can disregard this step. If you are developing an Edge Server app with TLS not enabled during development, you must complete this step.
For iOS, Apple disables insecure connections by default. You must add an exception for your public-accessible DNS to allow the client app to connect to it.
Select your App target, and go to the Signing & Capabilities
tab. Press the + Capability button, and search for
App Transport Security Settings
. Add this to your app.
Add an exception domain for your public-accessible DNS. This should
be just the string domain, similar to: ec2-13-58-70-88.us-east-2.compute.amazonaws.com
.
This creates an Info.plist
file in your project. Go to this file
to make the following adjustments.
Change this String
key to a Dictionary
. Add two more keys for:
Key | Type | Value |
---|---|---|
NSIncludesSubdomains | Boolean | YES |
NSExceptionAllowsInsecureHTTPLoads | Boolean | YES |
This enables your iOS client to connect to the insecure HTTP DNS.
Your Info.plist
file should look similar to:
Adjust the Log Level (Optional)
You can adjust the log level if you'd like to get additional details about the status of communication with the Edge Server.
In the App
file, you can add an .onAppear
block to set
the log level. Add a log level line in this block to get additional
information:
var body: some Scene { WindowGroup { ContentView(app: app) .environmentObject(errorHandler) .alert(Text("Error"), isPresented: .constant(errorHandler.error != nil)) { Button("OK", role: .cancel) { errorHandler.error = nil } } message: { Text(errorHandler.error?.localizedDescription ?? "") } .onAppear { Logger.shared.level = .trace } } }
For more information about setting the log level, refer to Logging - Swift SDK.
Run the App
Now you can build and run the app. When you log in, the app connects to the Edge Server instance. When you create new Items, those sync with the instance. The instance then syncs with the Atlas App Services App.
You can check the status of the Edge Server instance from your host.
With the client running, you can see "num_local_clients": 1
in
the instance status. You can also see error messages reflected
in the sync status.
After the next time the Edge Server instance syncs with your App Services App, you can see synced changes reflected in the linked Atlas collection.
Important
If you have previously connected directly from the client to your App Services App with Device Sync, you may need to clear state on the simulator or device. Resetting your cache enables your client to connect to the Edge Server instance.
In a console app, delete the mongodb-realm
directory. If you're
using an iOS or Android simulator or device, uninstall and reinstall
the app.
Connect to the Edge Server with MongoDB Drivers and Tools
You can connect to the Edge Server using standard MongoDB Drivers and tools. Clients use a specialized MongoDB URI connection string to connect to Edge Server and send requests.
The Wire Protocol server accepts these incoming connections. You can connect to the host machine with a MongoDB URI.
This URI may vary depending on the authentication type. Broadly, it resembles this form:
mongodb://<username>:<password>@<hostname>:<port>?authMechanism=PLAIN
Element | Description |
---|---|
<username> | The username of the Atlas user. For an
email/password user, this
might look similar to first.last@example.com . If this username
contains an @ symbol, you must escape the @ symbol. For example,
john.doe@example.com becomes john.doe%40example.com . |
<password> | The password of the Atlas user. This might look similar to
myPassword123456 . |
<hostname> | The public DNS of your Edge Server host. While in local development,
this might be localhost . Otherwise, it might look similar to
ec2-13-58-70-88.us-east-2.compute.amazonaws.com . For more
information, refer to Install and Configure the Edge Server Instance. |
<port> | The Edge Server Wire Protocol listen port. The default port is 27021 .
For more details, refer to Install and Configure the Edge Server Instance. |
authMechanism=PLAIN | The auth mechanism. Currently, the only supported value is PLAIN . |
Example
A Wire Protocol connection URI for an Edge Server instance hosted on Amazon EC2 might look similar to:
mongodb://example-user:my-password@ec2-13-58-70-88.us-east-2.compute.amazonaws.com:27021?authMechanism=PLAIN
Anonymous Connections
You can enable anonymous connections and connect without specifying a username or password. This option is disabled by default.
Important
Disable Anonymous Connections in Production
Enabling anonymous connections can streamline development by bypassing authentication flows. This is only intended as a development aid; do not bypass authentication flows in production environments.
Configure Edge Server with the Relevant Flag
To enable anonymous connections, start the Edge Server with the
--insecure-disable-auth
flag set to true
. This allows you to
connect without specifying a username and password.
This setting is false
by default. Setting this to true
enables
connections to bypass authentication.
For more information about using edgectl
to configure and start
the Edge Server instance, refer to
Install and Configure the Edge Server Instance.
Omit Authentication Details from MongoDB URI
When connecting without authentication, the MongoDB URI omits the authentication-related parameters. This simplfied URI is:
mongodb://<hostname>:<port>
Example
An anonymous Wire Protocol connection URI for an Edge Server instance hosted on Amazon EC2 might look similar to:
mongodb://ec2-13-58-70-88.us-east-2.compute.amazonaws.com:27021
An anonymous connection to an Edge Server instance running on your machine during development may resemble:
mongodb://localhost:27021
Supported MongoDB APIs
Edge Server currently supports a subset of the MongoDB APIs. For information about the supported APIs, refer to Edge Server MongoDB API Support - Preview.
Connect with MongoDB Compass
You can connect to the Edge Server instance using the MongoDB URI through MongoDB Compass. Compass enables you to explore the documents syncing to Edge Server instance, and make updates to those documents.
Limitations
Edge Server support for Compass is limited. You can use it to:
Browse databases, collections, and documents in the Edge Server instance.
Perform basic CRUD operations on documents in the Edge Server instance.
Edge Server does not support aggregation with Compass at this time.