commit | ccc74bd88443fa65eea079a80b69e7da493f30c7 | [log] [tgz] |
---|---|---|
author | Nate Bosch <nbosch@google.com> | Tue Jun 04 14:51:29 2019 -0700 |
committer | GitHub <noreply@github.com> | Tue Jun 04 14:51:29 2019 -0700 |
tree | b02979b8492f0e1646a16a0d2da852d5c12230e6 | |
parent | 00a4575e76001518acb0e2391a98505c42e7eb5b [diff] |
Add HttpMultiServer.bind utility (#16) We have a few places where we want to allow listening on 'any' hostname for the case where the server may be both access locally with something like "localhost" and externally with something like the servers hostname.
An implementation of dart:io
‘s HttpServer that wraps multiple servers and forwards methods to all of them. It’s useful for serving the same application on multiple network interfaces while still having a unified way of controlling the servers. In particular, it supports serving on both the IPv4 and IPv6 loopback addresses using HttpMultiServer.loopback.
import 'package:http_multi_server/http_multi_server.dart'; import 'package:shelf/shelf.dart' as shelf; import 'package:shelf/shelf_io.dart' as shelf_io; void main() { // Both http://127.0.0.1:8080 and http://[::1]:8080 will be bound to the same // server. HttpMultiServer.loopback(8080).then((server) { shelf_io.serveRequests(server, (request) { return new shelf.Response.ok("Hello, world!"); }); }); }