Concepts
dataBridges Network (dbNET)
dataBridges network consist of realtime communication servers (called clusters). Your application(s) needs to connect to a dataBridges network cluster to communicate with each other realtime. We have released opensource realtime SDK clients that you use in your application to connect to the trust-safe dataBridges network cluster and communicate with each other in realtime.
dataBridges Application (dbAPP)
Think of an dataBridges Application as a separate messaging space where your application using our realtime SDK having a valid application key can communicate with each other by sending event messages.
Lets take an example of 2 separate applications
- Realtime-tracking (RTT)
- you have an NodeJS app publishing tracking information while you have client apps (browser, iOS and android) that displays realtime tracking maps and information to the end users. All 4 applications will be using RTT app key to connect to dataBridges network. The NodeJS app will publish realtime information while the client apps will subscribe to realtime information.
- Game-server (GS)
- Similarly you can have GameServers and GameClients using GS app keys to exchange realtime game information between them.
dataBridges Application (dbAPP) KEYS
dataBridges allows multiple keys to be created for a single app. This allows for ease of key management.
Lets take the above example of Realtime-tracking (RTT) app. We have 4 separate apps that participate in realtime-tracking.
- A NodeJS server app that publishes realtime information
- 3 different client apps (browser, iOS and android) that consumes the realtime information.
Lets presume you have 4 separate teams who are responsible to manage their apps (server team, browser app team, ios app team and android app team)
dataBridges allows you to create separate keys for each application. This allows both ease of management and practical security processes to be implemented in terms of key management.
dataBridges Application (dbAPP) KEY TYPES
You can create 2 different types of dbAPP key.
dbAPP server key
dataBridges server sdk for NodeJS, Python, .Net allows you to design powerful realtime backend applications. These applications have access to extra dataBridges features than their corresponding client SDK's.
You need to create an dbAPP server key to use along with your server SDK's.
dbAPP client key
dataBridges client sdk are available JavaScript for browsers, Java for Android, Swift for iOS, NodeJS, Python, .Net. Client sdk's are lean and purpose ready for developing end client application.
You need to create an dbAPP server key to use along with your client SDK's.
dbAPP key secret
When you create an dbAPP key, you will get key and corresponding secret.
client app using dbAPP client key can communicate with each other over public channels and access public RPC server functions.
To access special channels (private, presence, system) and private RPC functions, client application require a trust-token from their authorization services.
A trust-token is a JWT token which will inform. the dbNET to allow the client app to access special channels and RPC. The trust-token (JWT) needs to be signed and the authorization service will use the key secret to sign the JWT trust-tokens.
We have published ready to use trust-token creation for Nodejs, Python and .NET. The code are production ready and can be used as functions in your existing authorization service with very minimal overhead.
You need both key and secret when you use server SDK. This allows server SDK to automatically access extra dataBridges features.
dataBridges Network (dbNET) authentication endpoints
Both the client and server sdk needs to be supplied with authentication endpoint to connect, authenticate and be granted access to bi-directional websocket connection.
The applications using client sdk will need to supply
- dbAPP key
- Authentication endpoint (URL)
The applications using server sdk will need to supply
- dbAPP key
- dbAPP secret
- Authentication endpoint (URL)
Do note: Authentication endpoint URL for client and server sdk will be always different.