IP/port to listen on, or UnixDomainSocketEndPoint for UDS
Backlog
int
128
Maximum pending connection queue
DualMode
bool
false
Accept both IPv4 and IPv6 on a single port
ReceiveBufferSize
int
65536
OS socket receive buffer (bytes)
SendBufferSize
int
65536
OS socket send buffer (bytes)
MaxConnections
int
0
Max concurrent connections (0 = unlimited). Claimed at accept time, so connections still negotiating TLS or the WebSocket upgrade count against it
MaxConnectionsPerIp
int
0
Max concurrent connections from one address (0 = unlimited). Ignored for Unix sockets, and leave it at 0 behind a reverse proxy where every connection appears to come from the proxy
TlsHandshakeTimeout
TimeSpan
10s
Max time for the TLS handshake on an accepted connection. Without it a peer that stalls mid-handshake holds a socket and its pipes indefinitely
SlowConsumerPolicy
SlowConsumerPolicy
Wait
Behavior when a session is backpressured: Wait, Drop, or Disconnect
Ssl
SslOptions?
null
SSL/TLS configuration (null = plain TCP)
WebSocket
WebSocketOptions?
null
WebSocket settings (only for StormWebSocketServer)
Ping/pong heartbeat and dead connection detection settings
Reconnect
ReconnectOptions
new()
Auto-reconnect settings
Compression
WsCompressionOptions
new()
Permessage-deflate compression settings (RFC 7692). Disabled by default
LoggerFactory
ILoggerFactory?
null
Logger factory for structured logging. Null = no logging (zero overhead)
WsCompressionOptions
Property
Type
Default
Description
Enabled
bool
false
Enable permessage-deflate compression
CompressionLevel
CompressionLevel
Fastest
DEFLATE compression level
MinMessageSize
int
128
Messages smaller than this (bytes) are sent uncompressed
ServerNoContextTakeover
bool
true
Reset server compression context per message
ClientNoContextTakeover
bool
true
Reset client compression context per message
ServerMaxWindowBits
int
15
Advisory only. DeflateStream gives no window-size control, so the library always compresses with the full 15-bit window and declines an offer that requires a smaller one, rather than accepting it and ignoring the parameter
ClientMaxWindowBits
int
15
Upper bound confirmed back to a client that offered client_max_window_bits. Never sent unsolicited (RFC 7692 #7.1.2.1)
Decompressed output is capped at MaxMessageSize. A compression bomb — a small frame that inflates
to gigabytes — fails the connection with MessageTooBig (1009) instead of the process.
SocketTuningOptions
Shared by ServerOptions, ClientOptions, and WsClientOptions.
Property
Type
Default
Description
NoDelay
bool
false
Disable Nagle's algorithm for lower latency
KeepAlive
bool
true
Enable TCP Keep-Alive to prevent idle connections from being dropped by firewalls/NATs
KeepAliveIdleTime
TimeSpan?
null
Idle time before first keep-alive probe (null = OS default, typically 2 hours)
KeepAliveProbeInterval
TimeSpan?
null
Interval between keep-alive probes (null = OS default, typically 75 seconds)
KeepAliveProbeCount
int?
null
Failed probes before connection is closed (null = OS default, typically 8-10)
MaxPendingSendBytes
long
1048576
Max bytes buffered before send backpressure (0 = unlimited)
MaxPendingReceiveBytes
long
1048576
Max bytes buffered before receive backpressure (0 = unlimited)
HeartbeatOptions
Shared by WebSocketOptions (server) and WsClientOptions (client).
Property
Type
Default
Description
PingInterval
TimeSpan
30s
Interval between Ping frames (TimeSpan.Zero = disabled)
MaxMissedPongs
int
3
Consecutive missed Pongs before closing
AutoPong
bool
true
Automatically reply to incoming Ping frames with a Pong