Я занимаюсь разработкой VR-игры на Unity, SignalR работает со всеми методами в моем хабе.
Проблема в том, что один метод работает не так, как ожидалось. Метод должен возвращать некоторую информацию об игре в конце игры, но я получаю эту ошибку:
Failed to invoke 'SessionReport' due to an error on the server.
Но если я попытаюсь вызвать метод в начале игры это работает как ожидалось.
Вот код в Unity, используемый для вызова моего метода 'SessionReport'.
public async static void SendReportInfo()
{
HubConnection hubConnection = SignalRInitConnection.hubConnection;
if (hubConnection != null && hubConnection.State == HubConnectionState.Connected)
{
Debug.Log("SignalR: Method SendReportInfo invoked");
try
{
await hubConnection.InvokeAsync("SessionReport", MapStats.riskHistory, MapStats.scoreHistory, MapStats.envHistory, MapStats.difficultyLvlByEnv, MapStats.mapNameByEnv);
}
catch(Exception e)
{
Debug.Log("EXCEPTION SESSION REPORT:" + e.Message);
}
}
else
{
Debug.Log("SignalR: hubCon is ko for SendReportInfo");
}
}
Вот метод в моем SignalR Hub:
public void SessionReport(List<List<Risk>> riskHistory, List<int> scoreHistory, List<int> envHistory, List<int> difficultyLvlByEnv, List<string> mapNameByEnv)
{
//Insert into DB
Console.WriteLine("Nice session report there.");
}
Соединение с Концентратор все еще устанавливается, когда я вызываю метод 'SessionReport' в конце игры.
Почему метод 'SessionReport' работает в начале игры, но не в конце?