事件處理

處理事件處理程序

ProudNet 的事件處理是基於委託模式。

客戶端繼承並實作Proud.INetClientEvent類,伺服器繼承並實作Proud.INetServerEvent類別。 建立已實作類別的實例後,必須透過伺服器上的 Proud.CNetServer.SetEventSink 和用戶端上的 Proud.CNetClient.SetEventSink 連線它。

class MyEvent:public INetClientEvent
{
    virtual void OnJoinServerComplete(...) override 
    { 
        // my event handler
        ...
    }
}
 
MyEvent m_myEvent;
myNetServer->SetEventSink(&m_myEvent); 

如果您使用支援C++11的編譯器,

您可以使用 lambda 表達式而不是繼承上面的類別來進行更簡潔的程式設計。

myNetServer->OnJoinServerComplete = [...](...) 
    {
        // my event handler
        ...
    };

有關何時透過上述過程接收事件回呼的信息,請參閱了解主循環

伺服器中可能發生的典型事件包括“收到客戶端的連線”,客戶端中發生的典型事件包括“與伺服器建立連線”和“P2P成員參與”。

對事件進行日誌處理是絕對必要的。

在技​​術支援過程中,大多數問題的出現​​都是因為不處理Log而很難找到問題的原因。 特別是,請務必記錄包含 errorInfo 作為參數的函數以及以下事件。

  • OnError: 由於 ProudNet 內發生錯誤或使用過程中出現問題而回呼訊息。

  • OnWarning: 回調不嚴重但有潛在問題的資訊。

  • OnInformation: 回調內部情況、追蹤等資訊。

  • OnException: 回調內部Exception錯誤訊息。

使用參數errorInfoerrorInfo->ToString();可輕鬆獲得有關問題的信息。

Last updated