Помощник подключения

Это компонент, который помогает выполнять подключение к серверу без написания своего кода. Он создан таким образом, чтобы автоматически выполнять подключение в случае его потери. Данный класс является производным от Singleton<T>, соответственно его жизненный цикл выполняется на протяжении всей игры до тех пор, пока вы его не уничтожите.

abstract class ConnectionHelper<T> : Singleton<T>

В фреймворке существует класс, который использует ConnectionHelper. Это класс подключения к мастер серверу. Он использует глобальное соединение, которое в свою очередь используется всеми основными системами фреймворка.

class ClientToMasterConnector : ConnectionHelper<ClientToMasterConnector>

Awake()

В методе Awake класса ClientToMasterConnector выполняется поиск аргументов командной строки, которые помогают установить IP адрес и порт мастер сервера. 

protected override void Awake()
{
    base.Awake();

    // If master IP is provided via cmd arguments
    if (Mst.Args.IsProvided(Mst.Args.Names.MasterIp))
    {
        serverIp = Mst.Args.MasterIp;
    }

    // If master port is provided via cmd arguments
    if (Mst.Args.IsProvided(Mst.Args.Names.MasterPort))
    {
        serverPort = Mst.Args.MasterPort;
    }
}

ConnectionFactory()

Метод ConnectionFactory создает новый экземпляр соединения. Для создания нового экземпляра соединения необходимо в своем классе, производном от ConnectionHelper переопределить метод ConnectionFactory как показано в примере внизу.

protected override IClientSocket ConnectionFactory()
{
    return Mst.Create.ClientSocket();
}

SetIpAddress()

Метод SetIpAddress устанавливает IP адрес, к котрому должен подключиться клиент.

public void SetIpAddress(string serverIp);

SetPort()

Метод SetPort устанавливает порт, по которому клиент будет подключаться к серверу

public void SetPort(int serverPort);

StartConnection()

Метод StartConnection запускает соединение с указанными параметрами, такими как IP адрес сервера, порт сервера и количество попыток соединения с сервером.

// Start connection using default parameters
public void StartConnection();

// Start connection with the given number of attempts
public void StartConnection(int numberOfAttempts);

// Start connection with the given IP, port and number of attempts
public void StartConnection(string serverIp, int serverPort, int numberOfAttempts = 5);

События подключения и отключения

// Invokes when connection established
public UnityEvent OnConnectedEvent;

// Invokes when client disconnected
public UnityEvent OnDisconnectedEvent;

Инспектор свойств компонента ConnectionHelper

  • LogLevel - Уровень логирования информации.
  • ServerIP - Адрес подключения к серверу.
  • ServerPort - Порт подключения к серверу.
  • UseSsl - Использовать ли защищенное соединение при подключении к серверу.
  • MinTimeToConnect - Минимальное время на попытку повторного подключения.
  • Max Time To Connect - Максимальное время на попытку повторного подключения. При каждом повторном подключении время на попытку нового подключения увеличивается в два раза начиная с MinTimeToConnect, но не более чем MaxTimeToConnect.
  • MaxAttemptsToConnect - Максимальное количество попыток повторного подключения.
  • WaitAndConnect - Прежде чем начнется соединение с сервером система подождет указанное в этом параметре время.
  • ConnectOnStart - Запускать ли соединение с сервером сразу же после старта игры.