У меня проблема с сервером Dart. Я пытаюсь отправить нескольким клиентам некоторую информацию, но у меня нет информации, доступной для них, когда они ее запрашивают. Это означает, что я использую Future
, и когда это завершается Future
, я затем отправлю данные обратно клиенту.Маршрутизация Dart нескольким клиентам одновременно
Проблема заключается в том, что сервер не позволит подключиться к серверу (или более) к серверу, пока первый Future
все еще ждет завершения.
Вот пример:
import "dart:async";
import "dart:io";
import "package:route/server.dart";
void main(List<String> args) {
HttpServer.bind("localhost", 5000)
.then((HttpServer server) {
Router router = new Router(server)
..serve("/multi").listen(_multi);
});
}
void _multi(HttpRequest request) {
print("Waiting");
new Timer(new Duration(seconds: 5),() {
print("Replying");
request.response.write("Hello There");
request.response.close();
});
}
В принципе, если у вас есть только один клиент подключения в то время, это работает прекрасно. Если, однако, у вас более одного клиента, первый клиент, который подключается, блокирует второй клиент, пока соединение первого клиента не будет закрыто.
Я также пытался использовать ..serve("/multi").asBroadcastStream()...
, потому что я думал, что это позволит нескольким подписчикам, но у них было такое же поведение.
Есть ли способ сделать это?
Спасибо.
Просто увидел это сбоку. Посмотрите на это. http://stackoverflow.com/questions/16703631/dart-handle-incoming-http-requests-in-parallel?rq=1 –
Ну, это не помогло. Я все еще застрял здесь. –