public async void Authenticate() { Session = await _client.AuthenticateDeviceAsync(deviceId); await _socket.ConnectAsync(Session); Logger.LogFormat("Session: '{0}'.", Session.AuthToken); }
private NakamaManager() { _client = new NClient.Builder(ServerKey).Host(HostIp).Port(Port).SSL(UseSsl).Build(); _client.OnTopicMessage = message => { var chatMessages = StateManager.Instance.ChatMessages; foreach (var topic in chatMessages.Keys) { if (topic.Id.Equals(message.Topic.Id)) { chatMessages[topic].Add(message.MessageId, message); } } }; _sessionHandler = session => { Logger.LogFormat("Session: '{0}'.", session.Token); _client.Connect(session, done => { Session = session; _reconnectCount = 0; // cache session for quick reconnects _dispatchQueue.Enqueue(() => { PlayerPrefs.SetString("nk.session", session.Token); AfterConnected(this, EventArgs.Empty); }); }); }; _client.OnDisconnect = evt => { Logger.Log("Disconnected from server."); if (_doReconnect && _reconnectCount < MaxReconnectAttempts) { _reconnectCount++; _dispatchQueue.Enqueue(() => { Reconnect(); }); } else { _dispatchQueue.Clear(); _dispatchQueue.Enqueue(() => { AfterDisconnected(this, EventArgs.Empty); }); } }; _client.OnError = error => ErrorHandler(error); }