Table of Contents

Class FishNetNetworkWrapper

Namespace
FishMMO.Server.Implementation
Assembly
FishMMO.Server.dll

Wraps FishNet NetworkManager with a clean abstraction for server orchestration.

public class FishNetNetworkWrapper : INetworkManagerWrapper, IDisposable
Inheritance
FishNetNetworkWrapper
Implements
Inherited Members

Constructors

FishNetNetworkWrapper(NetworkManager, IServerConfiguration, MonoBehaviour)

Initializes a new instance of the FishNetNetworkWrapper class.

public FishNetNetworkWrapper(NetworkManager networkManager, IServerConfiguration config, MonoBehaviour coroutineHost)

Parameters

networkManager NetworkManager

The FishNet NetworkManager instance.

config IServerConfiguration

The server configuration provider.

coroutineHost MonoBehaviour

MonoBehaviour to host coroutines (usually the Server MonoBehaviour).

Properties

NetworkManager

Gets the network manager wrapper instance.

public NetworkManager NetworkManager { get; }

Property Value

NetworkManager

Methods

ApplyTransportConfiguration(string, ushort?)

Applies transport configuration values from IServerConfiguration. WebTransport (QUIC/HTTP3) for all platforms. Each game server terminates its own TLS — NGINX forwards raw UDP at Layer 4.

Certificate path defaults by platform (overridable via config):

PlatformDefault cert path
Linux/etc/fishmmo/certs/fullchain.pem
WindowsC:\ProgramData\FishMMO\certs\fullchain.pem
macOS/usr/local/share/fishmmo/certs/fullchain.pem
Othercerts/fullchain.pem (relative to working directory)

When addressOverride or portOverride are supplied they take precedence over the .cfg file values, allowing the Server component's Inspector overrides to control the actual transport bind address and port.

public void ApplyTransportConfiguration(string addressOverride = null, ushort? portOverride = null)

Parameters

addressOverride string
portOverride ushort?

AttachLoginAuthenticator(IServer<INetworkManagerWrapper, NetworkConnection, IServerBehaviour>)

Attaches a login authenticator, assigns server references, and initializes async workers.

public void AttachLoginAuthenticator(IServer<INetworkManagerWrapper, NetworkConnection, IServerBehaviour> server)

Parameters

server IServer<INetworkManagerWrapper, NetworkConnection, IServerBehaviour>

The server instance providing infrastructure access.

Broadcast<T>(NetworkConnection, T, bool, Channel)

Broadcasts a message to a network connection.

public void Broadcast<T>(NetworkConnection conn, T broadcast, bool requireAuthentication = true, Channel channel = Channel.Reliable) where T : struct, IBroadcast

Parameters

conn NetworkConnection

The network connection.

broadcast T

The broadcast message.

requireAuthentication bool

Whether authentication is required.

channel Channel

The channel to use for broadcasting.

Type Parameters

T

Type of broadcast struct.

Remarks

A null or inactive connection is a no-op rather than a throw. Server-side characters are no longer guaranteed to have an owner: a combat-logout body stays spawned and keeps taking damage, firing the same achievement, quest and status events a played character does — every one of which would otherwise dereference a null connection somewhere deep in a gameplay system and abort whatever was in progress.

Dispose()

public void Dispose()

RegisterBroadcast<T>(Action<NetworkConnection, T, Channel>, bool)

Registers a broadcast handler for the given type.

public void RegisterBroadcast<T>(Action<NetworkConnection, T, Channel> handler, bool requireAuthentication = true) where T : struct, IBroadcast

Parameters

handler Action<NetworkConnection, T, Channel>

The handler to register.

requireAuthentication bool

Whether authentication is required for the broadcast.

Type Parameters

T

The broadcast type.

RegisterServerConnectionStateEventHandler(Action<ServerConnectionStateArgs>)

Subscribes to server connection state changes.

public void RegisterServerConnectionStateEventHandler(Action<ServerConnectionStateArgs> handler)

Parameters

handler Action<ServerConnectionStateArgs>

The handler to invoke on connection state changes.

SetMaximumClients(int)

Sets the maximum number of clients manually.

public void SetMaximumClients(int clients)

Parameters

clients int

The maximum number of clients allowed.

SetTransportAddress(string, IPAddressType)

Sets the transport bind address manually.

public void SetTransportAddress(string address, IPAddressType addressType)

Parameters

address string

The address to bind the transport to.

addressType IPAddressType

The type of IP address (IPv4 or IPv6).

SetTransportPort(ushort)

Sets the transport port manually.

public void SetTransportPort(ushort port)

Parameters

port ushort

The port number to use for the transport.

StartServer()

Starts the server, subscribes to connection state, and starts coroutine to await readiness.

public void StartServer()

StopServer()

Stops the server.

public void StopServer()

UnregisterBroadcast<T>(Action<NetworkConnection, T, Channel>)

Unregisters a broadcast handler for the given type.

public void UnregisterBroadcast<T>(Action<NetworkConnection, T, Channel> handler) where T : struct, IBroadcast

Parameters

handler Action<NetworkConnection, T, Channel>

The handler to unregister.

Type Parameters

T

The broadcast type.

UnregisterServerConnectionStateEventHandler(Action<ServerConnectionStateArgs>)

Unsubscribes from server connection state changes.

public void UnregisterServerConnectionStateEventHandler(Action<ServerConnectionStateArgs> handler)

Parameters

handler Action<ServerConnectionStateArgs>

The handler to unsubscribe from connection state changes.