public void ConnectToServer(MasterServerAPI.ConnectionEvents events) { if (connecting || running) { return; } running = true; connectionEvents = events; connecting = true; connectionEvents.OnError += (MatchMakingErrorCode e, Exception ex) => { connecting = false; running = false; Debug.Log("Error Code: " + e); if (ex != null) { Debug.LogWarning("Received Exception: " + ex); } }; connectionEvents.OnStatusUpdate += Debug.Log; connectionEvents.OnSuccess += ConnectToGameInstance; MasterServerAPI.QueueAsync(connectionEvents, Info.Address.IP, Info.Address.Port, tokenSource.Token).Start(); }
private static void StartClient() { SerializerSingleton.Serializer.AddSerializer <ClientHeartBeatPacket>(new ClientHeartBeatSerializer()); SerializerSingleton.Serializer.AddSerializer <ClientHandshakePacket>(new ClientHandshakeSerializer()); SerializerSingleton.Serializer.AddSerializer <ClientInstanceReadyPacket>(new ClientInstanceReadySerializer()); SerializerSingleton.Serializer.AddSerializer <ServerExitPacket>(new ServerExitSerializer()); MasterServerAPI.ConnectionEvents evs = new MasterServerAPI.ConnectionEvents { OnError = (MatchMakingErrorCode e, Exception ex) => { Console.WriteLine("Error Code: " + e); if (ex != null) { throw ex; } }, OnStatusUpdate = Console.WriteLine, OnSuccess = (MasterServerAPI.ServerInstanceResultPacket packet) => { Console.WriteLine("Connection Successful: Error: " + packet.ErrorCode + " Port:" + packet.Port); } }; Task <MasterServerAPI.ServerInstanceResultPacket> queue = MasterServerAPI.QueueAsync(evs, "localhost", 19999, new CancellationToken()); queue.Start(); queue.Wait(); return; // Task<MasterServerAPI.ServerHandshakePacket> handshakeTask = MasterServerAPI.BeginConnectionAsync("localhost", 19999); // handshakeTask.Start(); // Logger.DefaultLogger("Waiting for MatchMakingServer"); // while (handshakeTask.Status == TaskStatus.Running) // { // } // if (handshakeTask.IsFaulted) // { // throw (handshakeTask.Exception as AggregateException).InnerExceptions[0]; // } // MasterServerAPI.ServerHandshakePacket hpack = handshakeTask.Result; // Logger.DefaultLogger(""); // Logger.DefaultLogger("MatchMakingServer Info:"); // Logger.DefaultLogger($"\tCurrent Game Instances: {hpack.CurrentInstances}/{hpack.MaxInstances}"); // Logger.DefaultLogger($"\tClients in Queue: {hpack.WaitingQueue}"); // Logger.DefaultLogger($"\tHeartbeat: {hpack.HeartBeat}"); // Task<MasterServerAPI.ServerInstanceResultPacket> queueTask = MasterServerAPI.FindMatchAsync(hpack); // queueTask.Start(); // Logger.DefaultLogger("In Queue.."); // while (queueTask.Status == TaskStatus.Running) // { // Thread.Sleep(100); // } // if (queueTask.IsFaulted) // throw queueTask.Exception; // Logger.DefaultLogger("Finished Queue."); // Logger.DefaultLogger($"Game MatchMakingServer Instance Port: {queueTask.Result.Port}"); // Logger.DefaultLogger("Finished Queue."); }