36 lines
1.1 KiB
Dart
36 lines
1.1 KiB
Dart
#!/usr/bin/env dart
|
|
/// This is intended to replace Nginx in your web stack.
|
|
/// Either use this or another reverse proxy, but there is no real
|
|
/// reason to use them together.
|
|
library angel.multiserver;
|
|
|
|
import 'dart:io';
|
|
import 'package:angel_compress/angel_compress.dart';
|
|
import 'package:angel_multiserver/angel_multiserver.dart';
|
|
|
|
final Uri cluster = Platform.script.resolve('cluster.dart');
|
|
|
|
main() async {
|
|
var app = new LoadBalancer();
|
|
// Or, for SSL:
|
|
// var app = new LoadBalancer.secure('<server-chain>', '<server-key>');
|
|
|
|
// Response compression!
|
|
app.responseFinalizers.add(gzip());
|
|
|
|
// Cache static assets - just to lower response time
|
|
await app.configure(cacheResponses(filters: [new RegExp(r'images/\.*')]));
|
|
|
|
// Start up 5 instances of our main application
|
|
await app.spawnIsolates(cluster, count: 5);
|
|
|
|
app.onCrash.listen((_) async {
|
|
// Boot up a new instance on crash
|
|
await app.spawnIsolates(cluster);
|
|
});
|
|
|
|
var host = InternetAddress.ANY_IP_V4;
|
|
var port = 3000;
|
|
var server = await app.startServer(host, port);
|
|
print('Listening at http://${server.address.address}:${server.port}');
|
|
}
|