| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // |
| |
| // @dart = 2.9 |
| |
| import "dart:io"; |
| |
| main() { |
| bool serverOnClosed = false; |
| bool clientOnClosed = false; |
| bool requestOnClosed = false; |
| |
| HttpServer.bind("127.0.0.1", 0).then((server) { |
| var client = new HttpClient(); |
| |
| checkDone() { |
| if (serverOnClosed && clientOnClosed && requestOnClosed) { |
| server.close(); |
| client.close(); |
| } |
| } |
| |
| server.listen((request) { |
| request.listen((_) {}, onDone: () { |
| request.response.done.then((_) { |
| serverOnClosed = true; |
| checkDone(); |
| }); |
| request.response.write("hello!"); |
| request.response.close(); |
| }); |
| }); |
| |
| client |
| .postUrl(Uri.parse("http://127.0.0.1:${server.port}")) |
| .then((request) { |
| request.contentLength = "hello!".length; |
| request.done.then((_) { |
| clientOnClosed = true; |
| checkDone(); |
| }); |
| request.write("hello!"); |
| return request.close(); |
| }).then((response) { |
| response.listen((_) {}, onDone: () { |
| requestOnClosed = true; |
| checkDone(); |
| }); |
| }); |
| }); |
| } |