Deepstream is a standalone server that’s installed like e.g. Nginx or any database. It’s available via yum/apt for most Linux distros as well as Windows and MacOS executable.
A deepstream server accepts client connections via TCP and WebSocket. Clients can connect to it via SDKs that are currently fully available for JS/Node & Java/Android and partially/soon available for IOs(Obj C/Swift), Python and .NET.
Deepstream provides three core concepts:
Data-sync: stateful and persistent JSON objects that can be manipulated in whole or in parts and are synchronized across all connected clients
Pub-Sub: many-to-many messaging based on subscriptions to topics
Request-Response: Question/Answer workflows
The server itself is configurable and uses permission files to validate incoming messages, but doesn’t hold any logic other than that. All logic is provided by “clients” which can be backend processes as well as end-users. Deepstream provides numerous features such as listening and active subscriptions to hook into what users request and provide/transform data accordingly as well as integrate and retrieve data from third party components or APIs.
This makes deepstream useful as both a realtime server for mobile/browser and desktop clients as well as a backbone for a microservice architecture
Deepstream can optionally be integrated with three types of systems:
Databases can be used for long-term data storage and querying
Caches can be used for fast short-term data access
Message Busses can be used for multiple deepstream nodes to communicate with each other
Connectors are available for many popular systems, e.g. RethinkDB, MongoDB, Redis, AMQP, Kafka or ElasticSearch and can also easily be written yourself. This animation aims to provide an impression of how deepstream interacts with other systems
Resources & Documentation