Well my use case for SSR was doing files (icals, emails, etc). But you can certainly do pages with the same machinery. Here is how I render to a string which can then be written to a file or a stream in an iron:router response action.
A better way to do SSR with blaze in meteor than meteorhacks:SSR? - #2 by bogometer.
I also use iron:router (old app). I just define routes that only run on the server as you normally would. And then those routes use the code above. The only thing which is a PITA is the server route has no notion of who is logged in if you need that. When I require authentication, I either use meteor’s login tokens (if you don’t mind knowing internals) or create your own token collection. The token is passed by the logged in the client and grants the right to access the server route for a limited time.
An example of a route on the server side:
Router.map(function() {
this.route('/users/report/:filename', {
where: "server",
action: function() {
usersExport(this, (this.params.filename || 'glousers.csv').slice(0, -4)); // remove .csv
}
});
this.route('/users/export', {
where: "server",
action: function() {
usersExport(this);
}
});
});
And for the record, I think iron and blaze are just fine. When done properly, its bloody fast.