In today's quick tip, we will explore one of the inbuilt classes Dart gives us for creating web servers. This class comes as part of the "dart:io" library in the SDK.
The class in particular is appropriately named HttpServer
. Here's how we'll use it:
HttpServer.bind("localhost", 8080).then((HttpServer server) { ... });
bind()
represents a static method that takes as required arguments a hostname and a port. This returns a Future<HttpServer>
, allowing us to chain on methods like then()
and catch()
.
A successfully bound hostname and port now allows us to receive incoming requests by calling the listen()
method on the server object, which has a Stream
ing interface:
// ...
server.listen((HttpRequest request) {
request.response.write('Hello world');
request.response.close();
});
Receiving the request allows us to write out our response and end it. Here's the full snippet in its glory:
import 'dart:io';
void main() {
HttpServer
.bind("localhost", 8080)
.then((HttpServer server) {
server.listen((HttpRequest request) {
request.response.write("Hello world!");
request.response.close();
});
});
}
Using Async/Await 🔥
Here's a prettier way of writing a basic server:
import 'dart:io';
main() async {
var server = await HttpServer.bind("localhost", 8080);
await for (var request in server) {
request.response.write("Hello world");
request.response.close();
}
}
Here's a video demonstrating the first example:
Hope this was insightful.
Like, share and follow me for more content on Dart.
Top comments (0)