跳至主要内容
版本:v3

NetOption

重要 注意 提醒

Coding Style wiki


NetOptionNetFrame 連線選項的抽象基類,定義各協定共用的自動重連設定。內建三個衍生類,分別承載三種內建 Provider 的連線參數;實作自訂 Provider 時,也可繼承此類別擴充專屬選項。

命名空間OxGFrame.NetFrame
類型public abstract class
原始碼NetOption.cs
using OxGFrame.NetFrame;

宣告

public abstract class NetOption

衍生類總覽

類別適用 Provider說明
TcpNetOptionTcpNetProviderTCP 連線選項(主機、連接埠與封包處理設定)。
KcpNetOptionKcpNetProviderKCP 連線選項(主機、連接埠、通道與 KCP 配置)。
WebSocketNetOptionWebSocketNetProviderWebSocket 連線選項(連線 URL)。

屬性

屬性型別預設值說明
autoReconnectCountint-1自動重連次數。大於 0 時,斷線(非主動關閉)後會自動嘗試重連並逐次遞減;-1 表示停用自動重連。可設為 int.MaxValue 達到近乎無限次重連。

建構子

public NetOption(int autoReconnectCount = -1)

參數

參數型別說明
autoReconnectCountint自動重連次數。
預設值-1(停用自動重連)

說明

由衍生類建構子透過 base(autoReconnectCount) 呼叫,初始化自動重連次數。

提醒 重連間隔與重連回呼可透過 NetNode.SetReconnectTickerTime(預設 5 秒)與 NetNode.SetReconnectAction 設定。


TcpNetOption

TcpNetProvider(Telepathy)的連線選項。

類型public class
原始碼TcpNetOption.cs

宣告

public class TcpNetOption : NetOption

屬性

屬性型別預設值說明
hoststring伺服器主機位址。
portint伺服器連接埠。
processLimitPerTickint64每次輪詢(tick)最多處理的封包數。
maxBufferSizeint65536單一封包的最大緩衝大小(64KB)。

建構子

public TcpNetOption(string host, int port, int autoReconnectCount = -1)
public TcpNetOption(string host, int port, int processLimitPerTick, int maxBufferSize = 65536, int autoReconnectCount = -1)

參數

參數型別說明
hoststring伺服器主機位址。
portint伺服器連接埠。
processLimitPerTickint每次輪詢最多處理的封包數。
maxBufferSizeint單一封包的最大緩衝大小。
預設值65536
autoReconnectCountint自動重連次數。
預設值-1(停用自動重連)

範例

// 基本連線(斷線後自動重連 3 次)
var tcpOption = new TcpNetOption("127.0.0.1", 8888, autoReconnectCount: 3);
NetFrames.Connect(tcpOption);

// 自訂封包處理上限與緩衝大小
var tunedOption = new TcpNetOption("127.0.0.1", 8888, processLimitPerTick: 128, maxBufferSize: 131072);

KcpNetOption

KcpNetProvider(kcp2k)的連線選項。

類型public class
原始碼KcpNetOption.cs

宣告

public class KcpNetOption : NetOption

屬性

屬性型別預設值說明
hoststring伺服器主機位址。
portint伺服器連接埠。
kcpChannelKcpChannelKcpChannel.ReliableKCP 傳輸通道(Reliable 可靠 / Unreliable 不可靠)。
configKcpConfig內建預設配置(見下)kcp2k 的連線配置(NoDelay、視窗大小、逾時等)。

config 的內建預設值如下:

new KcpConfig
(
NoDelay: true,
DualMode: false,
Interval: 1,
Timeout: 2000,
SendWindowSize: Kcp.WND_SND * 1000,
ReceiveWindowSize: Kcp.WND_RCV * 1000,
CongestionWindow: false,
MaxRetransmits: Kcp.DEADLINK * 2
)

建構子

public KcpNetOption(string host, int port, KcpChannel kcpChannel = KcpChannel.Reliable, int autoReconnectCount = -1)
public KcpNetOption(string host, int port, KcpConfig config, KcpChannel kcpChannel = KcpChannel.Reliable, int autoReconnectCount = -1)

參數

參數型別說明
hoststring伺服器主機位址。
portint伺服器連接埠。連線時會轉型為 ushort(0–65535)。
configKcpConfig自訂 kcp2k 連線配置。未指定時使用內建預設配置。
kcpChannelKcpChannelKCP 傳輸通道。
預設值KcpChannel.Reliable
autoReconnectCountint自動重連次數。
預設值-1(停用自動重連)

範例

using kcp2k;

// 使用內建預設配置
var kcpOption = new KcpNetOption("127.0.0.1", 7777);
NetFrames.Connect(kcpOption);

// 自訂 KcpConfig
var config = new KcpConfig(NoDelay: true, Interval: 10, Timeout: 5000);
var customOption = new KcpNetOption("127.0.0.1", 7777, config, KcpChannel.Reliable, autoReconnectCount: 3);

WebSocketNetOption

WebSocketNetProvider(UnityWebSocket)的連線選項。

類型public class
原始碼WebSocketNetOption.cs

宣告

public class WebSocketNetOption : NetOption

屬性

屬性型別預設值說明
urlstringWebSocket 連線位址(ws://wss://)。

建構子

public WebSocketNetOption(string url, int autoReconnectCount = -1)

參數

參數型別說明
urlstringWebSocket 連線位址(ws://wss://)。
autoReconnectCountint自動重連次數。
預設值-1(停用自動重連)

範例

var wsOption = new WebSocketNetOption("ws://127.0.0.1:8080/ws", autoReconnectCount: 3);
NetFrames.Connect(wsOption);

自訂擴充

實作自訂 Provider 時,可繼承 NetOption 加入該協定專屬的連線參數:

public class CustomNetOption : NetOption
{
public string host { get; set; }

public int port { get; set; }

public CustomNetOption(string host, int port, int autoReconnectCount = -1) : base(autoReconnectCount)
{
this.host = host;
this.port = port;
}
}

於自訂 Provider 的 CreateConnect 中,將 NetOption 轉型回 CustomNetOption 即可取得參數(參考 INetProvider 繼承實作範例)。