platform/example/http2/main.dart

45 lines
1.2 KiB
Dart
Raw Normal View History

2018-11-08 04:11:10 +00:00
import 'dart:io';
import 'package:angel_framework/angel_framework.dart';
import 'package:angel_framework/http.dart';
import 'package:angel_framework/http2.dart';
2018-12-11 03:22:34 +00:00
import 'package:lumberjack/lumberjack.dart';
import 'package:lumberjack/io.dart';
2018-11-08 04:11:10 +00:00
main() async {
var app = new Angel()
..encoders.addAll({
'gzip': gzip.encoder,
'deflate': zlib.encoder,
});
2018-12-11 03:22:34 +00:00
app.logger = new Logger('angel');
app.logger.pipe(new AnsiLogPrinter.toStdout());
2018-11-08 04:11:10 +00:00
2018-11-11 01:07:09 +00:00
app.get('/', (req, res) => 'Hello HTTP/2!!!');
2018-11-08 04:11:10 +00:00
app.fallback((req, res) => throw new AngelHttpException.notFound(
2018-12-09 15:49:59 +00:00
message: 'No file exists at ${req.uri}'));
2018-11-08 04:11:10 +00:00
var ctx = new SecurityContext()
..useCertificateChain('dev.pem')
..usePrivateKey('dev.key', password: 'dartdart');
try {
ctx.setAlpnProtocols(['h2'], true);
} catch (e, st) {
2018-12-11 03:19:16 +00:00
app.logger.error(
2018-11-08 04:11:10 +00:00
'Cannot set ALPN protocol on server to `h2`. The server will only serve HTTP/1.x.',
2018-12-11 03:19:16 +00:00
error: e,
stackTrace: st,
2018-11-08 04:11:10 +00:00
);
}
var http1 = new AngelHttp(app);
var http2 = new AngelHttp2(app, ctx);
// HTTP/1.x requests will fallback to `AngelHttp`
http2.onHttp1.listen(http1.handleRequest);
2018-11-11 01:07:09 +00:00
await http2.startServer('127.0.0.1', 3000);
print('Listening at ${http2.uri}');
2018-11-08 04:11:10 +00:00
}