jdv145
jdv145

Reputation: 97

Changing settings on a dart websocket

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

Answers (1)

Fox32
Fox32

Reputation: 13560

TCP_NODELAY is already enabled by the HttpServer.

Upvotes: 2

Related Questions