Example #1
0
        public async void Authenticate()
        {
            Session = await _client.AuthenticateDeviceAsync(deviceId);

            await _socket.ConnectAsync(Session);

            Logger.LogFormat("Session: '{0}'.", Session.AuthToken);
        }
Example #2
0
        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);
        }