Caution
At its time, absync was an absolutely ground-breaking technology that didn't even see any recognition from a larger audience. Aggressive small-scale dataset synchronization between backend and frontend over WebSocket connection is still a topic of active development today. absync provided a treamendously mature solution for this idea at very early times of modern web frontend development. Today, the project is unmaintained and obsolete. Hopefully it can still spark new ideas, but it has been officially archived as of 2024-07-30.
2.0 no longer includes the backend data sanitation part that 1.0 provided.
If you still require that functionality, you can rely on the 1.0 code, or have a look at sanitizr.
absync is a tool to synchronize data pools in Angular applications.
absync lets you construct caching services for entities. These entities are expected to be retrievable through REST API endpoints. The absync caching services will initially attempt to retrieve the collection of the entity and populate the internal cache.
When the service is instructed to retrieve an entity, it will first check the cache for the entity and, if the entity isn't found, request it from the REST API and cache the result.
absync can also connect with the backend via socket.io websockets. In that scenario, it expects entities to be emitted
from the websocket.
If you have a collection named "devices" where the entity is named "device", absync would expect an event named "device"
with the device entity as the payload. absync will then update the cache and emit entityNew
and entityUpdated
events
as appropriate.
Entity deletions are signaled by a payload that contains only the ID of the entity. absync will then emit an
entityRemoved
event.
-
Configure absync in your Angular app:
angular.module( "app", [ "absync" ] ) .config( configure ); /* @ngInject */ function configure( absyncProvider ) { // io is expected to be the global socket.io instance. absyncProvider.configure( io ); }
-
Construct caching services in Angular to hold the data:
angular .module( "devices" ) .config( registerDevicesService ) .run( configureService ); /* @ngInject */ function registerDevicesService( absyncProvider ) { absyncProvider.collection( "devices", { model : "Device", collectionName : "devices", collectionUri : "/api/devices", entityName : "device", entityUri : "/api/device" } ); } /* @ngInject */ function configureService( devices ) { // Do something with your absync service }