Frage

Ich bin mit Remote-Schauspielern Scala, aber Roundtrip-Zeit (auch von einer trivialen Nachricht) ist 80ms, vermutlich aufgrund zugrunde liegenden Buchse des TCP / IP Nagle-Algorithmus deaktiviert nicht mit (auch als TCP_NODELAY bekannt), oder zumindest das ist, was jemand mit etwas Erfahrung mit Java RMI informiert mich.

Alles, was ich in dem Client tun einen Link zu dem Remote-Schauspieler zu bekommen, ist

val server=select(Node("127.0.0.1",12111),'server)

Gibt es irgendeine Art und Weise an dem darunter liegenden Sockel und invoke java.net.Socket.setTcpNoDelay() auf sie zu bekommen?

War es hilfreich?

Lösung

Wenn Sie setTcpNoDelay () auf dem darunter liegenden Sockel anrufen, ohne den Scala-Quellcode zu modifizieren, gibt es zwei Möglichkeiten, es zu tun.

  1. Implementieren Sie Ihre eigene SocketImplFactory: diese Lösung saugt, weil Sie Ihre eigenen SocketImpl müssen implementieren, die nicht trivial ist, und Sie können die vorhandene SocketImpl nicht nur wickeln, weil es noch keine öffentliche API ist. Alles, was ich es auf, wer SocketImplFactory in erster Linie entworfen, die Schuld hier sagen kann.

  2. Mit AOP

BTW, ich denke, der beste Weg, um dieses Problem zu lösen, ist die Scala Fern Schauspieler Code zu ändern und den Patch vor.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top