I have been using the dart:route
api for serving static files but I noticed that there is a core library called http_server
that contains helper classes and functions for dart:io
HttpServer
.
Of particular interest to me is the class VirtualDirectory
which, according to the docs, takes a String Object for the static content of directory and then you call the method serve()
var virtualDirectory = new VirtualDirectory('/var/www/');
virtualDirectory.serve(new HttpServer('0.0.0.0', 8080));
This doesn't work as there is no constructor for HttpServer - at least not in current versions.
virtualDirectory.serve(HttpServer.bind('0.0.0.0', 8080));
Which is how I have been instantiating a server also fails since virtualDirectory.serve()
doesn't take a Future<HttpServer>
and finally:
virtualDirectory.serve(HttpServer.bind('0.0.0.0', 8080).asStream());
also fails with The argument type 'Stream' cannot be assigned to the parameter type 'Stream'
So how do I connect a VirtualDirectory to a Server? There are no examples that I can find online and the VirtualDirectory source code does not make it clear. I would RTFM if I could FTFM. Links are fine as answers.
The
VirtualDirectory
can work from inside the Future returned byHttpServer.bind
. You can create a static file web server by using the following five lines of code:You can make it more sophisticated by parsing the URI and pulling out service requests prior to serving out files.