Generally deepstream is an alternative to using firebase, socket.io, featherJS and meteor. However rather than putting the logic within the server you instead run them as microservices and allow deepstream to handle load-balancing for you.
The two main things deepstream offers are:
- Events
You can publish and subscribe to events by simple doing:
deepstream.event.emit('event-name', data)
deepstream.event.subscribe('event-name', data => {})
Which is the functionality you expect to see from most pubsub mechanisms
- Records
Records is events with persistence. They are more heavy weight objects that persist their content in a cache + db and across all connected devices without the user/developer having to actually do anything. The also support offline support if you want to be able to get/set data while offline.
// get a record
const record = client.record.getRecord('unique-data-name')
// wait for record to be loaded from server
await record.whenReady()
// subscribe to any changes that happen in the future
record.subscribe(data => console.log('someone updated this object!', data)
// discard when finished
record.discard()
You can also set data directly without having to subscribe using
client.record.setData('some-record', newData)
The are multiple other aspects deepstream provides like merge-conflicts, permissions, authentication and some useful patterns, but the above code is about 90% of what you would expect a user to use in deepstream
Generally deepstream is an alternative to using firebase, socket.io, featherJS and meteor. However rather than putting the logic within the server you instead run them as microservices and allow deepstream to handle load-balancing for you.
The two main things deepstream offers are:
- Events
You can publish and subscribe to events by simple doing:
deepstream.event.emit('event-name', data)
deepstream.event.subscribe('event-name', data => {})
Which is the functionality you expect to see from most pubsub mechanisms
- Records
Records is events with persistence. They are more heavy weight objects that persist their content in a cache + db and across all connected devices without the user/developer having to actually do anything. The also support offline support if you want to be able to get/set data while offline.
// get a record
const record = client.record.getRecord('unique-data-name')
// wait for record to be loaded from server
await record.whenReady()
// subscribe to any changes that happen in the future
record.subscribe(data => console.log('someone updated this object!', data)
// discard when finished
record.discard()
You can also set data directly without having to subscribe using
client.record.setData('some-record', newData)
The are multiple other aspects deepstream provides like merge-conflicts, permissions, authentication and some useful patterns, but the above code is about 90% of what you would expect a user to use in deepstream