public void RegisterSteam_Invalid([ValueSource("BlankCases")] string sessionToken)
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INError          result = null;

            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Steam(sessionToken);

            client.Register(message, (INSession session) =>
            {
                evt.Set();
            }, (INError error) =>
            {
                result = error;
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            Assert.AreEqual("Steam registration not available", result.Message);
        }
Exemple #2
0
        public void SetUp()
        {
            ManualResetEvent evt   = new ManualResetEvent(false);
            INError          error = null;

            client = new NClient.Builder(DefaultServerKey).Build();
            string id      = TestContext.CurrentContext.Random.GetString();
            var    message = NAuthenticateMessage.Device(id);

            client.Register(message, (INSession authenticated) =>
            {
                session = authenticated;
                client.Connect(session);
                evt.Set();
            }, (INError err) => {
                error = err;
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.IsNull(error);
        }
        // +++ functions ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        public INClient LoginOrRegister(string loginType, object userData)
        {
            _client = new NClient
                      .Builder(serverSettings.serverKey)
                      .Host(serverSettings.hostName)
                      .Port(serverSettings.port)
                      .SSL(serverSettings.ssl)
                      .Build();

            // register a central point to handle events change the consistence of the
            // players in the match
            _client.OnMatchPresence += OnMatchPresence;

            AuthenticatorFactory authenticatorFactory = new AuthenticatorFactory(_client);
            ICustomAuthenticator authenticator        = authenticatorFactory.GetAuthenticator(loginType);

            authenticator.Login(
                userData,
                (INSession session) =>
            {
                _client.Connect(session, (bool done) =>
                {
                    if (OnConnected != null)
                    {
                        OnConnected(session);
                    }
                });
            },
                (INError error) =>
            {
                if (OnConnected != null)
                {
                    OnConnected(null);
                }
            }
                );

            return(_client);
        }
        public void LoginDevice_Invalid_NoId()
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INError          result = null;

            string   id      = random.GetString();
            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Device(id);

            client.Login(message, (INSession session) =>
            {
                evt.Set();
            }, (INError error) =>
            {
                result = error;
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            Assert.AreEqual("ID not found", result.Message);
        }
        public void RegisterDevice_Valid()
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INSession        result = null;

            string   id      = TestContext.CurrentContext.Random.GetString();
            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Device(id);

            client.Register(message, (INSession session) =>
            {
                result = session;
                evt.Set();
            }, (INError error) =>
            {
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            Assert.NotNull(result.Token);
        }
Exemple #6
0
        public void GetServerTime_Valid()
        {
            ManualResetEvent evt        = new ManualResetEvent(false);
            long             serverTime = 0;

            string   id      = TestContext.CurrentContext.Random.GetString();
            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Device(id);

            client.Register(message, (INSession session) =>
            {
                client.Connect(session);
                Thread.Sleep(500);
                serverTime = client.ServerTime;
                evt.Set();
            }, (INError _) => {
                evt.Set();
            });

            evt.WaitOne(1000, false);
            Assert.That(serverTime, Is.Not.EqualTo(0));
            client.Disconnect();
        }
        public void LoginEmail_Invalid_Email()
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INError          result = null;

            string   email    = random.GetString();
            string   password = random.GetString();
            INClient client   = NClient.Default(DefaultServerKey);
            var      message  = NAuthenticateMessage.Email(email, password);

            client.Login(message, (INSession session) =>
            {
                evt.Set();
            }, (INError error) =>
            {
                result = error;
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            Assert.AreEqual("Invalid email address format", result.Message);
        }
Exemple #8
0
        public void Connect_Valid()
        {
            ManualResetEvent evt = new ManualResetEvent(false);
            var connected        = false;

            string   id      = TestContext.CurrentContext.Random.GetString();
            INClient client  = NClient.Default(DefaultServerKey);
            var      message = NAuthenticateMessage.Device(id);

            client.Register(message, (INSession session) =>
            {
                client.Connect(session, (bool _) => {
                    connected = true;
                    evt.Set();
                });
            }, (INError _) => {
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.IsTrue(connected);
            client.Disconnect();
        }
Exemple #9
0
        public void SetUp()
        {
            INError error = null;

            client1 = new NClient.Builder(DefaultServerKey).Build();
            client2 = new NClient.Builder(DefaultServerKey).Build();

            ManualResetEvent c1Evt = new ManualResetEvent(false);

            client1.Register(NAuthenticateMessage.Device(random.GetString()), (INSession session) =>
            {
                userId1 = session.Id;
                client1.Connect(session);
                c1Evt.Set();
            }, (INError err) =>
            {
                error = err;
                c1Evt.Set();
            });
            c1Evt.WaitOne(5000, false);
            Assert.IsNull(error);

            ManualResetEvent c2Evt = new ManualResetEvent(false);

            client2.Register(NAuthenticateMessage.Device(random.GetString()), (INSession session) =>
            {
                userId2 = session.Id;
                client2.Connect(session);
                c2Evt.Set();
            }, (INError err) =>
            {
                error = err;
                c2Evt.Set();
            });
            c2Evt.WaitOne(5000, false);
            Assert.IsNull(error);
        }
    //Will join a room for the client, and update that room's userlist for all clients
    public void JoinRoom(string roomName)
    {
        client = NakamaData.Singleton.Client;
        ManualResetEvent joinEvent = new ManualResetEvent(false);

        currentRoom = roomName;
        var message = new NTopicJoinMessage.Builder().TopicRoom(Encoding.UTF8.GetBytes(roomName)).Build();

        client.Send(message, (INTopic topic) =>
        {
            chatText.Add("Successfully joined the room '" + roomName + "'. There are currently " + topic.Presences.Count + " Users");
            Debug.Log("Successfully Joined Room");
            userList     = topic.Presences;
            currentTopic = topic.Topic;
            joinEvent.Set();
        }, (INError err) =>
        {
            Debug.Log("Failed to join room : " + err);
            joinEvent.Set();
        });

        joinEvent.WaitOne(1000, false);

        //Create the user list to display
        foreach (var userInList in userList)
        {
            if (!chatUsersJoinedID.Contains(userInList.UserId))
            {
                chatUsersJoinedID.Add(userInList.UserId);
            }
        }

        Debug.Log("JoinRoom::  ::chatUsersJoinedID.count: " + chatUsersJoinedID.Count);

        UserListChange = true;   //Run update to update UserList
        RegisterOnTopicMessagePresence();
    }
        public void RegisterEmail_Valid()
        {
            ManualResetEvent evt    = new ManualResetEvent(false);
            INSession        result = null;

            string   piece    = random.GetString().Substring(8);
            string   email    = String.Format("{0}@{0}.com", piece);
            string   password = TestContext.CurrentContext.Random.GetString();
            INClient client   = NClient.Default(DefaultServerKey);
            var      message  = NAuthenticateMessage.Email(email, password);

            client.Register(message, (INSession session) =>
            {
                result = session;
                evt.Set();
            }, (INError error) =>
            {
                evt.Set();
            });

            evt.WaitOne(500, false);
            Assert.NotNull(result);
            Assert.NotNull(result.Token);
        }
    public UnityMainThreadDispatch()
    {
        // A new Nakama client which uses a socket thread.
        var client = new NClient.Builder(ServerKey)
                     .Host(ServerHost)
                     .Port(ServerPort)
                     .SSL(ServerSsl)
                     .Build();

        // Wrap the socket client so we dispatch all callbacks on the main thread.
        _client         = new NManagedClient(client);
        _uiLabelMessage = "Initial state.";

        // Attach an error handler for received message errors.
        _client.OnError = (INError error) => {
            ErrorHandler(error);
        };
        // Log a message whenever we're disconnected from the server.
        _client.OnDisconnect = (INDisconnectEvent evt) => {
            Debug.Log("Disconnected from server.");
            // We'll set a UI label from the socket.
            _uiLabelMessage = "Disconnected.";
        };
    }
Exemple #13
0
    void Start()
    {
        RegisterButtonPlayer1 = GameObject.Find("RegisterButtonPlayer1").GetComponent <Button>();
        LoginButtonPlayer1    = GameObject.Find("LoginButtonPlayer1").GetComponent <Button>();
        ConnectPlayer1        = GameObject.Find("ConnectPlayer1").GetComponent <Button>();
        RegisterButtonPlayer2 = GameObject.Find("RegisterButtonPlayer2").GetComponent <Button>();
        LoginButtonPlayer2    = GameObject.Find("LoginButtonPlayer2").GetComponent <Button>();
        ConnectPlayer2        = GameObject.Find("ConnectPlayer2").GetComponent <Button>();
        SelfPlayer1           = GameObject.Find("SelfPlayer1").GetComponent <Button>();
        SelfPlayer2           = GameObject.Find("SelfPlayer2").GetComponent <Button>();
        JoinTopicPlayer1      = GameObject.Find("JoinTopicPlayer1").GetComponent <Button>();
        JoinTopicPlayer2      = GameObject.Find("JoinTopicPlayer2").GetComponent <Button>();
        SendChatPlayer1       = GameObject.Find("SendChatPlayer1").GetComponent <Button>();
        SendChatPlayer2       = GameObject.Find("SendChatPlayer2").GetComponent <Button>();
        OutputTextField       = GameObject.Find("OutputTextField").GetComponent <Text>();

        client1 = new NClient.Builder("defaultkey")
                  .Host("127.0.0.1")
                  .Port(7350)
                  .SSL(false)
                  .Build();

        client2 = new NClient.Builder("defaultkey")
                  .Host("127.0.0.1")
                  .Port(7350)
                  .SSL(false)
                  .Build();

        client1.OnTopicMessage += (object sender, NTopicMessageEventArgs e) => {
            outputText = Encoding.UTF8.GetString(e.Message.Data);
        };

        client2.OnTopicMessage += (object sender, NTopicMessageEventArgs e) => {
            outputText = Encoding.UTF8.GetString(e.Message.Data);
        };
    }
 // +++ constructor ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public AuthenticatorFactory(INClient client)
 {
     _client = client;
 }
Exemple #15
0
    void Start()
    {
        RegisterButtonPlayer1 = GameObject.Find("RegisterButtonPlayer1").GetComponent <Button>();
        LoginButtonPlayer1    = GameObject.Find("LoginButtonPlayer1").GetComponent <Button>();
        ConnectPlayer1        = GameObject.Find("ConnectPlayer1").GetComponent <Button>();
        RegisterButtonPlayer2 = GameObject.Find("RegisterButtonPlayer2").GetComponent <Button>();
        LoginButtonPlayer2    = GameObject.Find("LoginButtonPlayer2").GetComponent <Button>();
        ConnectPlayer2        = GameObject.Find("ConnectPlayer2").GetComponent <Button>();
        JoinTopicPlayer1      = GameObject.Find("JoinTopicPlayer1").GetComponent <Button>();
        JoinTopicPlayer2      = GameObject.Find("JoinTopicPlayer2").GetComponent <Button>();
        SendChatPlayer1       = GameObject.Find("SendChatPlayer1").GetComponent <Button>();
        SendChatPlayer2       = GameObject.Find("SendChatPlayer2").GetComponent <Button>();
        OutputTextField       = GameObject.Find("OutputTextField").GetComponent <Text>();

        client1 = new NClient.Builder("defaultkey")
                  .Host("127.0.0.1")
                  .Port(7350)
                  .SSL(false)
                  .Build();

        client2 = new NClient.Builder("defaultkey")
                  .Host("127.0.0.1")
                  .Port(7350)
                  .SSL(false)
                  .Build();

        client1.OnTopicMessage = (INTopicMessage message) => {
            outputText = message.Data;
        };
        client1.OnTopicPresence = (INTopicPresence presences) => {
            foreach (var presence in presences.Join)
            {
                Debug.LogFormat("Presence update received by Player 1: User handle '{0}' joined the topic.", presence.Handle);
            }
            foreach (var presence in presences.Leave)
            {
                Debug.LogFormat("Presence update received by Player 1: User handle '{0}' left the topic.", presence.Handle);
            }
        };

        client2.OnTopicMessage = (INTopicMessage message) => {
            outputText = message.Data;
        };
        client2.OnTopicPresence = (INTopicPresence presences) => {
            foreach (var presence in presences.Join)
            {
                Debug.LogFormat("Presence update received by Player 2: User handle '{0}' joined the topic.", presence.Handle);
            }
            foreach (var presence in presences.Leave)
            {
                Debug.LogFormat("Presence update received by Player 2: User handle '{0}' left the topic.", presence.Handle);
            }
        };

        // Add button handlers
        RegisterButtonPlayer1.onClick.AddListener(Player1RegisterClick);
        LoginButtonPlayer1.onClick.AddListener(Player1LoginClick);
        ConnectPlayer1.onClick.AddListener(Player1Connect);
        RegisterButtonPlayer2.onClick.AddListener(Player2RegisterClick);
        LoginButtonPlayer2.onClick.AddListener(Player2LoginClick);
        ConnectPlayer2.onClick.AddListener(Player2Connect);
        JoinTopicPlayer1.onClick.AddListener(Player1JoinTopic);
        JoinTopicPlayer2.onClick.AddListener(Player2JoinTopic);
        SendChatPlayer1.onClick.AddListener(Player1SendChatMessage);
        SendChatPlayer2.onClick.AddListener(Player2SendChatMessage);
    }
Exemple #16
0
 // +++ constructor ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public NvpDeviceIdLoginOrRegisterAuthenticator(INClient client)
 {
     _client = client;
 }
Exemple #17
0
 public void UnRegisterOnMatchData()
 {
     client                  = NakamaData.Singleton.Client;
     client.OnMatchData     -= c_OnMatchData;
     client.OnMatchPresence -= c_OnMatchPresence;
 }
Exemple #18
0
 public void UnRegisterMatchListRoom()
 {
     client = NakamaData.Singleton.Client;
     //client.OnTopicMessage -= MatchList_OnTopicMessage;
 }
Exemple #19
0
 // +++ constructor ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public NvpRandomGuidLoginOrRegisterAuthenticator(INClient client)
 {
     _client = client;
 }
 // +++ Unity callbacks ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 void Awake()
 {
     client = InstantiateNetworkClient(serverKey, url, port, ssl);
 }
Exemple #21
0
    private void GetPreviousMatchesFromRoom()
    {
        ManualResetEvent historyEvent = new ManualResetEvent(false);

        client = NakamaData.Singleton.Client;
        byte[] roomByte = Encoding.UTF8.GetBytes("match-list");
        IList <INTopicMessage> msgsReturned = null;

        var message = new NTopicMessagesListMessage.Builder()
                      .TopicRoom(roomByte)
                      .Forward(false)
                      .Limit(100)
                      .Build();

        client.Send(message, (INResultSet <INTopicMessage> msgs) =>
        {
            // Each message in the result set is a `INTopicMessage` identical
            // to messages received through `OnTopicMessage` realtime delivery.
            msgsReturned = msgs.Results;
            Debug.Log("Successfully listed messages from topic. msgs.Results.Count: " + msgs.Results.Count + " msgsReturned.Count: " + msgsReturned.Count);
            historyEvent.Set();
        }, (INError error) => {
            Debug.LogErrorFormat("Could not list messages from topic: '{0}'.", error.Message);
            historyEvent.Set();
        });
        historyEvent.WaitOne(1000, false);

        if (msgsReturned.Count < 1)
        {
            return;
        }

        //GO through the messages as if they were just recieved
        foreach (INTopicMessage topicMessage in msgsReturned)
        {
            Debug.Log("topicMessage.Data.ToString(): " + topicMessage.Data.ToString());
            var  bytesAsString = Encoding.ASCII.GetString(topicMessage.Data);
            var  chatJson      = JsonUtility.FromJson <MatchRoomClass>(bytesAsString);
            Guid tempMatchID   = new Guid(chatJson.matchIDGUID);

            MatchSettings newSettings = new MatchSettings();
            newSettings.matchCreator = chatJson.userName;
            newSettings.maxHealth    = chatJson.matchMaxHealth;
            newSettings.matchName    = chatJson.matchName;

            if (chatJson.addRemove == "add")
            {
                Debug.Log("Adding previous match: " + chatJson.matchName);
                newSettings.matchStatus = "open";
                //matchNameMatchGuid.Add(chatJson.matchName, tempMatchID.ToByteArray());
                if (matchGuidMatchSettings.ContainsKey(tempMatchID))
                {
                    return;
                }
                matchGuidMatchSettings.Add(tempMatchID, newSettings);
                Debug.Log("Added matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
            }
            else
            {
                Debug.Log("Removing matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
                //matchNameMatchGuid.Remove(chatJson.matchName);
                //matchGuidMatchSettings.Remove(chatJson.matchName);
                if (matchGuidMatchSettings.ContainsKey(tempMatchID))
                {
                    matchGuidMatchSettings[tempMatchID].matchStatus = "closed";
                }
                else
                {
                    newSettings.matchStatus = "closed";
                    matchGuidMatchSettings.Add(tempMatchID, newSettings);                           //Only reason we add, is so if it comes up again in message
                }
                Debug.Log("Removed matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
            }
        }
    }