Высокопроизводительная реализация RakNet, ориентированная на ненадежные клиентские соединения с ограниченной скоростью. Он обеспечивает строгие серверные и клиентские каналы в стиле netty.
В этой реализации используются каналы Netty для обеспечения быстрого и эффективного сервера RakNet, предлагающего полный набор функций транспортного протокола, а также возможности для расширения с помощью любых плагинов или пользовательского поведения.
Перерабатываемые объекты:
Предметы, подвергшиеся интенсивному использованию, подлежат вторичной переработке.
Снижает давление GC.
Оснащен системой обнаружения утечек Netty.
Строгие шаблоны Netty:
Использует шаблон Bootstrap и ServerBootstrap.
Сигнализирует противодавление, используя возможность записи канала.
Использует Netty ChannelOptions для настройки канала.
Следует обычным шаблонам связывания и соединения .
Точные ответы на обещания для write , Connect и других.
Взаимодействия с буфером 0-копий:
Повсюду сохраняются ссылки на буферы.
Составные буферы, используемые для инкапсуляции и дефрагментации.
Простой в использовании интерфейс потоковой передачи данных:
Настраиваемый идентификатор пакета, используемый для записи и чтения необработанного ByteBuf.
Расширяемый, позволяющий использовать несколько идентификаторов пакетов и конфигураций каналов.
Как и в случае с Netty, конвейер можно модифицировать и дополнять по мере необходимости.
Расширенное управление потоком
Сигналы противодавления полезны для ограничения буфера, когда клиент перегружен.
Ограничения на набор ожидающих кадров уменьшают количество ненужных повторных отправок при высоких скоростях передачи.
Приоритет повторной отправки зависит от последовательности кадров, что позволяет быстрее получать старые пакеты.
Драйвер автоматической промывки
Рекомендуется записывать в конвейер без сброса.
Циклы очистки конденсируют исходящие данные для оптимального использования MTU.
<зависимости> <зависимость> <groupId>network.ycc</groupId> <artifactId>raknet-сервер</artifactId> <версия>1.1</версия> </зависимость> <зависимость> <groupId>network.ycc</groupId> <artifactId>raknet-клиент</artifactId> <версия>1.1</версия> </зависимость> </зависимости> <репозиторий> <id>репо-релизы Waterdogpe</id> <name>Репозиторий WaterdogPE</name> <url>https://repo.waterdog.dev/releases</url> </репозиторий>
Хороший пример можно увидеть в простом тестовом примере Hello World.