A drop-in replacement for Backbones Collection's Sync method that uses socket.io and socket.io-streaming to stream data to the collection from a fetch request.
Performing a fetch will return a jQuery promise that reports progress notifications as each new model is streamed from the server.
If you pass in the option
realtime: trueto the fetch method, the models will be added to the collection as they are streamed in from the server, otherwise it will wait until streaming has ended before adding the models to the collection.
By default all new models will be merged into the collection, but that can be overridden by passing
merge: falseto the fetch method
If successful, the jQuery promise will return an array of objects that was returned from the server, unless the
realtime option was set, in which case it will just return true
To run the tests navigate to project directory and type:
grunt test or
To run browser tests, run command
grunt testServer and that will start a local server. Go to
localhost:8000 and the mocha test page will pop up showing the test results.
While this is certainly not ideal for browser tests, websocket support in headless browsers is greatly lacking currently.
There are two versions in the browser/dist folder.
- "Standalone" version contains all the source files and dependencies necessary.
- "Require" contains just the backbone.io-stream code and expects you to take care of having the dependencies available when used.
Compile Browser Files
To compile the browser files yourself (instead of using the ones in dist), run
npm run-script compile or
A very basic example of the server side can be found in the test/testServer.js file. A more real world use case would be piping a Mongoosejs QueryStream to the socket.io stream.