我试着摆弄一下,但看到dart在内部使用了一些包装类,我不知道如何设置套接字的设置。特别是我尝试创建一个低延迟websocket服务器,所以我想更改TCP_NODELAY标志(是否有任何其他相关的标志/设置低延迟?)。
我现在的代码如下。在测试时看到非常高的延迟,我认为这是因为TCP_NODELAY。使用一个简单的node.js套接字服务器,我确实可以获得较低的延迟。
import 'dart:io';
import 'dart:async';
import 'package:route/server.dart';
var port = 7654;
void main() {
HttpServer.bind(InternetAddress.ANY_IP_V4, port)
.then((HttpServer server) {
print('listening for connections on $port');
var router = new Router(server);
router.serve('/ws').transform(new WebSocketTransformer()).listen(blub);
router.serve('/').listen((req) {
req.response..write('foo ${new DateTime.now().millisecondsSinceEpoch}')..close();
});
},
onError: (error) => print("Error starting HTTP server: $error"));
}
void blub(WebSocket ws) {
print("@@ $ws");
ws.listen((obj) {
ws.add(obj);
print("@@ $obj ${new DateTime.now().millisecondsSinceEpoch}");
});
}