Reputation: 97
I tried fiddling a little, but seeing that dart uses some wrapping classes internally, i'm not sure how i can set the settings of a socket. Specifically i try to create a low latency websocket-server, so i want to change the TCP_NODELAY flag (are there any other relevant flags/settings for low latency?) .
The code i have now is below. Seeing very high latencies when testing, i think its because of TCP_NODELAY. With a simple node.js socket-server i did mange to get low latencies.
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}");
});
}
Upvotes: 2
Views: 305