Add an http_multi_server package.

This package supports using the same server class for multiple bound interfaces.
In particular, it's useful for binding both IPv4 and IPv6 loopback interfaces.

R=rnystrom@google.com
BUG=19147

Review URL: https://codereview.chromium.org//311233004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37023 260f80e4-7a28-3924-810f-c04153c831b5
5 files changed
tree: a2d7f97fc6674ddd9ff06ed1f2f0d7c54a29675c
  1. lib/
  2. test/
  3. pubspec.yaml
  4. README.md
README.md

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!");
    });
  });
}