Here is our way to setup scalable Parse LiveQuery server on Heroku
Because there is one and only 'web' process on Heroku, it will divide into two Heroku apps: Main and LiveQuery.
A: Main app - All features except for LiveQuery server
Step A1. Setup a Parse app on Heroku
Step A2. Add a Heroku Redis (free plan is enough for testing)
Step A3. Configure Parse app, add redisURL for liveQuery
var api = new ParseServer({
...
liveQuery: {
classNames: [...],
redisURL: REDIS_URL_ON_MAIN
},
...
});
B: LiveQuery app - A scalable LiveQuery server for Main app
Step B1. Steup another Parse app on Heroku
Step B2. Configure Parse app, DO NOT set liveQuery
var api = new ParseServer({
appId: APP_ID_ON_LIVEQUERY,
masterKey: MASTER_KEY_ON_LIVEQUERY,
serverURL: SERVER_URL_ON_LIVEQUERY,
databaseURI: // (Optional) Only warning even if leave it default
});
Step B3. Create LiveQuery server
var app = express();
app.use(PARSE_MOUNT_ON_LIVEQUERY, api);
var httpServer = require('http').createServer(app);
httpServer.listen(PORT_ON_LIVEQUERY, function() {
/* Create HTTP server successfully */
});
ParseServer.createLiveQueryServer(httpServer, {
redisURL: REDIS_URL_ON_MAIN // Redis URL from Mani app
});
C: Client side - Swift for example
Step C1. Init Client instance using
Client(server:applicationId:clientKey:)
let client = Client(server: SERVER_URL_ON_LIVEQUERY,
applicationId: APP_ID_ON_LIVEQUERY,
clientKey: nil)
Step C2. Subscribe for LiveQuery
let subscription = client.subscribe(query)
subscription.handle(Event.created, { query, object in
/* Handle CREATE event */
})
In the end, we can scale web process in LiveQuery app on Heroku ^_^
Welcome any comments on my glist