NetOption
Coding Style wiki
NetOption 是 NetFrame 連線選項的抽象基類,定義各協定共用的自動重連設定。內建三個衍生類,分別承載三種內建 Provider 的連線參數;實作自訂 Provider 時,也可繼承此類別擴充專屬選項。
| 命名空間 | OxGFrame.NetFrame |
| 類型 | public abstract class |
| 原始碼 | NetOption.cs |
using OxGFrame.NetFrame;
宣告
public abstract class NetOption
衍生類總覽
| 類別 | 適用 Provider | 說明 |
|---|---|---|
| TcpNetOption | TcpNetProvider | TCP 連線選項(主機、連接埠與封包處理設定)。 |
| KcpNetOption | KcpNetProvider | KCP 連線選項(主機、連接埠、通道與 KCP 配置)。 |
| WebSocketNetOption | WebSocketNetProvider | WebSocket 連線選項(連線 URL)。 |
屬性
| 屬性 | 型別 | 預設值 | 說明 |
|---|---|---|---|
| autoReconnectCount | int | -1 | 自動重連次數。大於 0 時,斷線(非主動關閉)後會自動嘗試重連並逐次遞減;-1 表示停用自動重連。可設為 int.MaxValue 達到近乎無限次重連。 |
建構子
public NetOption(int autoReconnectCount = -1)
參數
| 參數 | 型別 | 說明 |
|---|---|---|
| autoReconnectCount | int | 自動重連次數。 預設值: -1(停用自動重連) |
說明
由衍生類建構子透過 base(autoReconnectCount) 呼叫,初始化自動重連次數。
提醒 重連間隔與重連回呼可透過 NetNode.SetReconnectTickerTime(預設 5 秒)與 NetNode.SetReconnectAction 設定。
TcpNetOption
TcpNetProvider(Telepathy)的連線選項。
| 類型 | public class |
| 原始碼 | TcpNetOption.cs |
宣告
public class TcpNetOption : NetOption
屬性
| 屬性 | 型別 | 預設值 | 說明 |
|---|---|---|---|
| host | string | — | 伺服器主機位址。 |
| port | int | — | 伺服器連接埠。 |
| processLimitPerTick | int | 64 | 每次輪詢(tick)最多處理的封包數。 |
| maxBufferSize | int | 65536 | 單一封包的最大緩衝大小(64KB)。 |
建構子
public TcpNetOption(string host, int port, int autoReconnectCount = -1)
public TcpNetOption(string host, int port, int processLimitPerTick, int maxBufferSize = 65536, int autoReconnectCount = -1)
參數
| 參數 | 型別 | 說明 |
|---|---|---|
| host | string | 伺服器主機位址。 |
| port | int | 伺服器連接埠。 |
| processLimitPerTick | int | 每次輪詢最多處理的封包數。 |
| maxBufferSize | int | 單一封包的最大緩衝大小。 預設值: 65536 |
| autoReconnectCount | int | 自動重連次數。 預設值: -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
屬性
| 屬性 | 型別 | 預設值 | 說明 |
|---|---|---|---|
| host | string | — | 伺服器主機位址。 |
| port | int | — | 伺服器連接埠。 |
| kcpChannel | KcpChannel | KcpChannel.Reliable | KCP 傳輸通道(Reliable 可靠 / Unreliable 不可靠)。 |
| config | KcpConfig | 內建預設配置(見下) | 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)
參數
| 參數 | 型別 | 說明 |
|---|---|---|
| host | string | 伺服器主機位址。 |
| port | int | 伺服器連接埠。連線時會轉型為 ushort(0–65535)。 |
| config | KcpConfig | 自訂 kcp2k 連線配置。未指定時使用內建預設配置。 |
| kcpChannel | KcpChannel | KCP 傳輸通道。 預設值: KcpChannel.Reliable |
| autoReconnectCount | int | 自動重連次數。 預設值: -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
屬性
| 屬性 | 型別 | 預設值 | 說明 |
|---|---|---|---|
| url | string | — | WebSocket 連線位址(ws:// 或 wss://)。 |
建構子
public WebSocketNetOption(string url, int autoReconnectCount = -1)
參數
| 參數 | 型別 | 說明 |
|---|---|---|
| url | string | WebSocket 連線位址(ws:// 或 wss://)。 |
| autoReconnectCount | int | 自動重連次數。 預設值: -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 繼承實作範例)。