Implementación de RakNet de alto rendimiento dirigida a conexiones de clientes poco confiables y con velocidad limitada. Proporciona canales de cliente y servidor de estilo netty estricto.
Esta implementación utiliza canales Netty para proporcionar un servidor RakNet rápido y eficaz, que ofrece el conjunto completo de funciones del protocolo de transporte y, al mismo tiempo, ofrece espacio para la extensión con complementos o comportamiento personalizado.
Objetos reciclables:
Los objetos muy usados se reciclan.
Reduce la presión del GC.
Equipado con detección de fugas Netty.
Patrones estrictos de Netty:
Utiliza el patrón Bootstrap y ServerBootstrap.
Contrapresión de señales utilizando la capacidad de escritura del canal.
Utiliza Netty ChannelOptions para la configuración del canal.
Sigue los patrones normales de unión y conexión .
Respuestas de promesa precisas para escribir , conectar y otros.
Interacciones de búfer de 0 copias:
Referencias de búfer conservadas en todas partes.
Tampones compuestos utilizados para encapsulación y desfragmentación.
Interfaz de transmisión de datos fácil de usar:
ID de paquete configurable utilizado para escritura y lectura sin formato de ByteBuf.
Extensible para permitir múltiples configuraciones de canal e ID de paquete.
Fiel a la forma de Netty, la canalización se puede modificar y aumentar según sea necesario.
Control de flujo avanzado
Señales de contrapresión útiles para limitar el buffer cuando el cliente está sobrecargado.
Los límites pendientes del conjunto de cuadros reducen los reenvíos innecesarios durante altas velocidades de transferencia.
Reenvíe la prioridad según la secuencia de cuadros para obtener paquetes más antiguos más rápido.
Controlador de descarga automatizado
Se recomienda escribir en la canalización sin descarga.
Los ciclos de descarga condensan los datos salientes para un mejor uso de la MTU.
<dependencias> <dependencia> <groupId>red.ycc</groupId> <artifactId>servidor-raknet</artifactId> <versión>1.1</versión> </dependencia> <dependencia> <groupId>red.ycc</groupId> <artifactId>cliente-raknet</artifactId> <versión>1.1</versión> </dependencia> </dependencias> <repositorio> <id>lanzamientos-repo-waterdogpe</id> <nombre>Repositorio WaterdogPE</nombre> <url>https://repo.waterdog.dev/releases</url> </repositorio>
Se puede ver un buen ejemplo en el sencillo caso de prueba Hello World.