Hochleistungsfähige RakNet-Implementierung, die auf unzuverlässige und ratenbegrenzte Client-Verbindungen abzielt. Es bietet strenge Server- und Clientkanäle im Netty-Stil.
Diese Implementierung nutzt Netty-Kanäle, um einen schnellen und effektiven RakNet-Server bereitzustellen, der den gesamten Funktionsumfang des Transportprotokolls bietet und gleichzeitig Raum für Erweiterungen mit beliebigen Plugins oder benutzerdefiniertem Verhalten bietet.
Recycelbare Gegenstände:
Stark genutzte Gegenstände werden recycelt.
Reduziert den GC-Druck.
Ausgestattet mit Netty-Leckerkennung.
Strenge Netty-Muster:
Verwendet Bootstrap- und ServerBootstrap-Muster.
Signalisiert Gegendruck mithilfe der Kanalbeschreibbarkeit.
Verwendet Netty ChannelOptions für die Kanalkonfiguration.
Folgt den normalen Bindungs- und Verbindungsmustern .
Genaue Promise-Antworten für Write , Connect und andere.
0-Kopie-Puffer-Interaktionen:
Durchgehend beibehaltene Pufferreferenzen.
Zusammengesetzte Puffer, die zur Kapselung und Defragmentierung verwendet werden.
Benutzerfreundliche Daten-Streaming-Schnittstelle:
Konfigurierbare Paket-ID, die zum Schreiben und Lesen von Roh-ByteBuf verwendet wird.
Erweiterbar, um mehrere Paket-IDs und Kanalkonfigurationen zu ermöglichen.
Getreu der Netty-Form kann die Pipeline nach Bedarf geändert und erweitert werden.
Erweiterte Flusskontrolle
Gegendrucksignale sind nützlich zur Pufferbegrenzung, wenn der Client überlastet ist.
Ausstehende Frame-Set-Grenzwerte reduzieren unnötige erneute Sendungen bei hohen Übertragungsraten.
Senden Sie die Priorität basierend auf der Frame-Sequenz neu, damit Sie ältere Pakete schneller erhalten.
Automatisierter Spültreiber
Es wird empfohlen, ohne Flush in die Pipeline zu schreiben.
Flush-Zyklen verdichten ausgehende Daten für eine optimale MTU-Nutzung.
<Abhängigkeiten> <Abhängigkeit> <groupId>network.ycc</groupId> <artifactId>raknet-server</artifactId> <version>1.1</version> </Abhängigkeit> <Abhängigkeit> <groupId>network.ycc</groupId> <artifactId>raknet-client</artifactId> <version>1.1</version> </Abhängigkeit> </Abhängigkeiten> <Repository> <id>waterdogpe-repo-releases</id> <name>WaterdogPE-Repository</name> <url>https://repo.waterdog.dev/releases</url> </repository>
Ein gutes Beispiel ist der einfache Hello World-Testfall.