INetTips
Coding Style wiki
INetTips 是 NetFrame 的連線狀態提示介面。當節點的連線狀態發生變化(開始連線、連線成功、連線錯誤、斷線、重連)時,NetNode 會自動呼叫對應的介面方法,適合用來實作連線 Loading 遮罩、錯誤彈窗與斷線重連提示等 UI 回饋。
| 命名空間 | OxGFrame.NetFrame |
| 類型 | public interface |
| 原始碼 | INetTips.cs |
using OxGFrame.NetFrame;
宣告
public interface INetTips
狀態與觸發時機
NetNode 內部以 NetStatus 列舉管理連線狀態,每次狀態變化都會觸發對應的 INetTips 方法:
| NetStatus | 對應方法 | 觸發時機 |
|---|---|---|
CONNECTING | OnConnecting | 呼叫 Connect 啟動連線程序時。 |
CONNECTED | OnConnected | 連線成功建立時。 |
CONNECTION_ERROR | OnConnectionError | 通訊發生錯誤時。 |
DISCONNECTED | OnDisconnected | 連線關閉或中斷時。 |
RECONNECTING | OnReconnecting | 斷線後進入自動重連程序時。 |
提醒 可於建立 NetNode 時傳入實作實例(new NetNode(provider, netTips)),或透過 NetNode.SetNetTips 設定。
成員總覽
| 方法 | 說明 |
|---|---|
| OnConnecting | 開始啟動連線程序時觸發。 |
| OnConnected | 連線成功建立時觸發。 |
| OnConnectionError | 通訊發生錯誤時觸發。 |
| OnDisconnected | 連線關閉或中斷時觸發。 |
| OnReconnecting | 進入自動重連程序時觸發。 |
OnConnecting
void OnConnecting()
說明
呼叫 NetFrames.Connect(或 NetNode.Connect)啟動連線程序時觸發。通常在此開啟「連線中」的 UI 遮罩,防止使用者重複操作。
OnConnected
void OnConnected(object payload)
參數
| 參數 | 型別 | 說明 |
|---|---|---|
| payload | object | 連線成功的相關資訊,內容依 Provider 而異(內建 TcpNetProvider / KcpNetProvider 傳入 0;WebSocketNetProvider 傳入開啟事件參數)。 |
說明
連線成功建立時觸發。通常在此關閉連線遮罩,並開始執行「登入」或「同步資料」等後續流程。
OnConnectionError
void OnConnectionError(object payload)
參數
| 參數 | 型別 | 說明 |
|---|---|---|
| payload | object | 錯誤資訊(內建實作皆傳入錯誤訊息字串)。 |
說明
通訊發生錯誤時觸發。通常在此彈出錯誤訊息視窗,提示使用者檢查網路環境。
OnDisconnected
void OnDisconnected(object payload)
參數
| 參數 | 型別 | 說明 |
|---|---|---|
| payload | object | 斷線的相關資訊(內建 TcpNetProvider / KcpNetProvider 傳入 -1;WebSocketNetProvider 傳入關閉代碼;自動重連結束轉入斷線時為 null)。 |
說明
連線關閉或中斷時觸發(無論主動關閉或意外斷線)。通常在此執行資料清理,或返回登入畫面。
OnReconnecting
void OnReconnecting()
說明
連線非主動關閉而中斷、節點進入自動重連程序時觸發。通常在此顯示「網路不穩定,嘗試重連中...」的提示 UI。
注意- 自動重連由 NetOption.autoReconnectCount 控制,重連次數用盡後將轉為 OnDisconnected。
- 透過
NetFrames.Close(或NetNode.Close)主動關閉連線不會觸發自動重連。
繼承實作範例
定義一個類別實作 INetTips,並掛載至 NetNode:
using OxGFrame.NetFrame;
using UnityEngine;
public class NetTipsExample : INetTips
{
public void OnConnecting()
{
// 開啟「連線中」遮罩,防止重複操作
Debug.Log("連線中...");
}
public void OnConnected(object payload)
{
// 關閉遮罩,執行登入或同步資料等後續流程
Debug.Log($"連線 成功: {payload}");
}
public void OnConnectionError(object payload)
{
// 顯示連線錯誤提示
Debug.LogError($"連線錯誤: {payload}");
}
public void OnDisconnected(object payload)
{
// 清理資料或返回登入畫面
Debug.LogWarning($"連線中斷: {payload}");
}
public void OnReconnecting()
{
// 顯示「重連中」提示 UI
Debug.Log("嘗試重新連線中...");
}
}
// 建立節點時傳入
var netNode = new NetNode(new TcpNetProvider(), new NetTipsExample());
// 或於既有節點上設定
netNode.SetNetTips(new NetTipsExample());
注意 payload 的實際內容取決於底層 Provider,使用前建議先做型別檢查。