Skip to content
This repository has been archived by the owner on May 28, 2019. It is now read-only.

Latest commit

 

History

History
57 lines (50 loc) · 2.46 KB

README.md

File metadata and controls

57 lines (50 loc) · 2.46 KB

RakNetServer

Build Status Known Vulnerabilities codecov Discord Chat

High performance fork of RakNetServer targeting unreliable and rate-limited client connections. It provides strict netty style server and client channels.

This implementation uses Netty channels to provide a fast and effective RakNet server, offering the full feature set of the transport protocol, while providing room for extension with any plugins or custom behavior.

Examples

See the test case here. (Simple example coming soon)

Features

  • Recylable objects:
    • Heavily used objects are recycled.
    • Reduces GC pressure.
    • Instrumented with Netty leak detection.
  • 0-copy buffer interactions:
    • Retained buffer references throughout.
    • Composite buffers used for encapsulation and defragmentation.
  • Easy-to-use data streaming interface:
    • Configurable packet ID used for raw ByteBuf writing and reading.
    • Extensible to allow for multiple packet ID and channel configurations.
    • True to Netty form, the pipeline can be modified and augmented as needed.
  • Advanced flow control
    • Back pressure signals useful for buffer limiting when client is overloaded.
    • Pending frame-set limits reduce unnecessary resends during high transfer rates.
    • Resend priority based on frame sequence so you get older packets faster.
  • Automated flush driver
    • Recommended to write to pipeline with no flush.
    • Flush cycles condense outbound data for best use of MTU.

Maven Use (at CodeMC)

    <dependencies>
        <dependency>
            <groupId>network.ycc</groupId>
            <artifactId>raknet</artifactId>
            <version>0.5</version>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>codemc-repo</id>
            <url>https://repo.codemc.org/repository/maven-public</url>
        </repository>
    </repositories>