【发布时间】:2014-01-09 01:15:50
【问题描述】:
我遇到了 Dart 服务器的问题。我正在尝试向多个客户发送一些信息,但在他们请求时我没有可用的信息。这意味着我正在使用Future,当Future 完成时,我会将数据发送回客户端。
问题在于,当第一个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()...,因为我认为这将允许多个订阅者,但行为相同。
有没有办法做到这一点?
谢谢。
【问题讨论】:
-
刚刚在旁边看到这个。会看看它。 stackoverflow.com/questions/16703631/…
-
好吧,这并没有太大帮助。我仍然被困在这里。
标签: stream dart server-side routes