Wollte keinen enttäuschen
Ich drück mich vlt öfters ungünstig aus. Liegt evt. daran, dass ich nen halbes Jahr kaum Deutsch geredet hab, sondern Englisch. Wenn ich das mit dem Zeitinterval amchen würde, müsste ich ja warten bis jeder Client das Zeitsignal bekommen hat. Angenommen ein Client ist wirklich langsam (300ms, ja man könnte jetzt die Frage stellen, ob der überhaupt mitspielen darf
) und alle anderen super schnell, wenn ich nun asynch. an jeden einzeln das Signal schicke, Könnte es passieren, dass beim super langsamen sich ne Warteschlange an alten Zeitsignalen ansammelt. Und daher würde ich in diesem Fall warten, bis jeder Writeaufruf wirklich geschehen ist. Das wäre dann ggf. auch ohne das Zeitsignal so.. Also 30x pro Sekunde die Koordinaten schicken würde evt. beim langsamen Clienten dann eine Warteschlange verursachen.
Nun nochmal kurz was zum Senden: Mit NIO kann man doch nicht asynchron senden, man kann doch lediglich sich anzeigen lassen, ob ein Socket beschreibbar ist oder nicht (Gleiches für das Lesen von Sockets). Dennoch würde jeder write-Aufruf solange blockieren (Also ich meine jetzt innerhalb eines Frameworks. Klar Netty und Mina sind Eventdriven, als Programmierer bekommt man Futures, aber intern sind die Workerthreads beteiligt und warten dann bei jedem write solange, bis der Kram wirklich versendet wurde, oder nicht ?)
Sprich wenn man einfach ohne Ende Writerequests reinkloppt und die Verbindung zum Clienten agrnicht in der Lage ist, dass entsprechend schnell zu transportieren, so würde die Warteschlang des Frameworks immer länger werden. Von daher sollte man doch warten, dass jeder Write request fertig ist. Und halt genau in diesem Fall würde der langsame alle anderen ausbremsen.
Sofern man dann natürlich nicht dem langsamen Clienten weniger Pakete schickt. Also vlt nur alle 80 ms statt alle 30ms.
Dann wäre das Problem wieder beseitigt.
ICh hoffe ich habe das diesmal etwas konkreter erklärt.
Gruß,
Chris