Hi,
danke erstmal für die vielen Antworten.
[*]Ist es wichtig, dass die Nachrichten von allen Clients zeitnah ankommen (Puffern vs direkt senden)
Brighty
- Ja ist es. wie bei einem online Spiel. Du verursachst einen Wert bspw. Schaden, Heal, bewegst dich etc ...
[*]Ist es wichtig, dass die Nachrichten überhaupt ankommen (einfaches Notify vs wichtiger Datentransport)
Brighty
-Ja wieso nicht
[*]Werden einzelne Clients untereinander identifiziert? Dürfen Nachrichten verschiedener Clients vom Server zusammengefasst werden? (so wie ich das verstanden habe, soll dass ja ein All-to-all Informationsfluss werden, oder?)
Brighty
- Also Client sendet bspw. den Schadenswert an Server und alle anderen Clienten erhalten diesen Wert sofort um Rückschlüsse zu ziehen, wieviel Schaden jeder einzelne Spieler macht. Wenn da ein Zeitversatz durch Puffern von 2sec gäbe währe das nicht so toll.
[*]Wo befindet sich das Setup? Lokales geschütztes Netz vs großes, böses Internet?
Brighty
- ES soll über das große böse Internet laufen
[*]Falls großes böses Internet: Wie sensibel sind die Daten? Sollte man die vielleicht noch TLS tunneln...
Brighty
- völlig irrelevant. Da nur Schadenswerte übertragen werden
Aktuell hat jeder Client einen ListenerThread laufen der die Message empfängt und diese verarbeitet.
Der Server empfängt die der Daten und sendet sie sofort wieder an alle Clienten.
Doch das wird bei 10 User schon sehr fehleranfällig. Vermutlich weil ich es auch nicht richtig umgesetzt habe.
Daher ja meine Frage, welcher Lösungsansatz bietet sich hier an.
Client 1 --- verursacht 1000 Schaden
Client 2 --- verursacht 500 Schaden
jetzt bekommt der Server in 2 Datenpakete die er in 2 seperaten Threads verwaltet.
ist puffern in dem Fall sinnvoll ?
Oder einfach in dem gleichen Thread wieder an alle Clienten senden?
was passiert wenn am client 1 Paket eintrifft und er gerade ein vorheriges verarbeitet ?
Benutzt wird übrigens Delphi 10.1 (Studentenpreis sei dank
Grüße
sOn