public void SendChatMessage()
    {
        client         = NakamaData.Singleton.Client;
        clientUserName = NakamaData.Singleton.ClientUserName;

        if (chatInputBox.text == "")
        {
            return;
        }
        Debug.LogWarning("Sending a message");
        ManualResetEvent sendMessage = new ManualResetEvent(false);

        chatInputText     = chatInputBox.text;
        chatInputBox.text = "";
        string chatMessage           = "{\"messageText\": \"[" + clientUserName + " " + DateTime.Now.ToString("HH:mm:ss") + "] " + chatInputText + "\"}";
        NTopicMessageSendMessage msg = NTopicMessageSendMessage.Default(currentTopic, Encoding.UTF8.GetBytes(chatMessage));

        client.Send(msg, (INTopicMessageAck ack) =>
        {
            Debug.Log("Message being sent");
            sendMessage.Set();
        }, (INError error) =>
        {
            Debug.LogErrorFormat("Player could not send message: '{0}'.", error.Message);
        });

        sendMessage.WaitOne(1000, false);
    }
Example #2
0
    private void SendMatchInfoToMatchRoom(string addRemove, int maxHealth)
    {
        client = NakamaData.Singleton.Client;
        ManualResetEvent sendMessage  = new ManualResetEvent(false);
        Guid             matchID_Guid = new Guid(matchID);

        //Debug.LogWarning("Encoding.UTF8.GetString(matchID): " + Encoding.UTF8.GetString(matchID));
        //Guid test = new Guid(matchID);

        string chatMessage = "{\"addRemove\":\"" + addRemove + "\",\"matchName\":\"" + matchName + "\",\"userName\":\"" + NakamaData.Singleton.ClientUserName + "\",\"matchIDGUID\":\"" + matchID_Guid.ToString() + "\",\"matchMaxHealth\":\"" + maxHealth + "\"}";
        //Debug.LogWarning("DEBUG:::: chatJson.matchIDGUID: " + test + " chatJson.matchIDGUID..ToByteArray(): " + test.ToByteArray() + " Encoding.UTF8.GetString(matchID)" + Encoding.UTF8.GetString(matchID));
        //Debug.LogWarning("DEBUG:::: Encoding.UTF8.GetString(test.ToByteArray()): " + Encoding.UTF8.GetString(test.ToByteArray()) + " Encoding.UTF8.GetString(matchID)" + Encoding.UTF8.GetString(matchID));
        NTopicMessageSendMessage msg = NTopicMessageSendMessage.Default(matchListTopic, Encoding.UTF8.GetBytes(chatMessage));

        client.Send(msg, (INTopicMessageAck ack) =>
        {
            Debug.Log("Match Room Data being sent: " + chatMessage);
            sendMessage.Set();
        }, (INError error) =>
        {
            Debug.LogErrorFormat("Player could not send message: '{0}'.", error.Message);
        });

        sendMessage.WaitOne(1000, false);
    }
Example #3
0
    public void Player2SendChatMessage()
    {
        string chatMessage           = "{\"data\": \"Player 2 says: Current time is " + DateTime.Now.ToString("yyyy-MM-dd\\THH:mm:ss\\Z") + "\"}";
        NTopicMessageSendMessage msg = NTopicMessageSendMessage.Default(topicPlayer2, chatMessage);

        client2.Send(msg, (INTopicMessageAck ack) => {
            Debug.Log("Sent message to Player 1");
        }, (INError error) => {
            Debug.LogErrorFormat("Player 2 could not send message: '{0}'.", error.Message);
        });
    }
Example #4
0
        public void SendRoomMessage()
        {
            var topic = StateManager.Instance.Topics[RoomName];

            var chatMessage = new ChatMessageContent {
                Body = _inputField.text
            };

            var msg = NTopicMessageSendMessage.Default(topic, JsonUtility.ToJson(chatMessage));

            NakamaManager.Instance.TopicSendMessage(msg);
        }
Example #5
0
        public void SendDirectMessage()
        {
            var user  = StateManager.Instance.Friends[_friendSelectorDropdown.value];
            var topic = StateManager.Instance.Topics[user.Id];

            var chatMessage = new ChatMessageContent {
                Body = _inputField.text
            };

            var msg = NTopicMessageSendMessage.Default(topic, JsonUtility.ToJson(chatMessage));

            NakamaManager.Instance.TopicSendMessage(msg);
        }
    // send topic
    protected void sendTopic(byte[] matchId)
    {
        var createMatchMessage = new CreateMatchMessage();

        createMatchMessage.MatchId     = matchId;
        createMatchMessage.userEnterId = this.userEnterId + 1;

        var data    = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(createMatchMessage));
        var message = NTopicMessageSendMessage.Default(this.topicId, data);

        Application.client.Send(message, (INTopicMessageAck ack) => {
            Debug.Log("Successfully sent message to topic");
        }, (INError error) => {
            Debug.LogErrorFormat("Could not send message to topic: '{0}'.", error.Message);
        });
    }
Example #7
0
        public void MessageSendWithoutJoinTopic()
        {
            INError error = null;

            INTopic          topic = null;
            ManualResetEvent evt1  = new ManualResetEvent(false);

            client1.Send(new NTopicJoinMessage.Builder().TopicRoom("test-room").Build(), (INResultSet <INTopic> topics) =>
            {
                topic = topics.Results[0];
                client1.Send(NTopicLeaveMessage.Default(topic.Topic), (bool complete) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(topic);

            ManualResetEvent evt2 = new ManualResetEvent(false);

            client1.Send(NTopicMessageSendMessage.Default(topic.Topic, "{\"some\":\"data\"}"), (INTopicMessageAck ack) =>
            {
                evt2.Set();
            }, (INError err) =>
            {
                error = err;
                evt2.Set();
            });
            evt2.WaitOne(5000, false);
            Assert.IsNotNull(error);
        }
Example #8
0
        public void MessagesListTopic()
        {
            INError error = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);
            string           room = "history-room";
            INTopic          t    = null;

            client1.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INResultSet <INTopic> topics) =>
            {
                t = topics.Results[0];
                evt1.Set();
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(t);

            string data = "{\"some\":\"history data " +
                          System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(random.GetString())) + "\"}";

            for (int i = 0; i < 10; i++)
            {
                ManualResetEvent evtFor = new ManualResetEvent(false);
                client1.Send(NTopicMessageSendMessage.Default(t.Topic, data), (INTopicMessageAck ack) =>
                {
                    evtFor.Set();
                }, (INError err) =>
                {
                    error = err;
                    evtFor.Set();
                });
                evtFor.WaitOne(5000, false);
                if (error != null)
                {
                    break;
                }
            }
            Assert.IsNull(error);

            INResultSet <INTopicMessage> messages = null;
            ManualResetEvent             evt2     = new ManualResetEvent(false);

            client1.Send(new NTopicMessagesListMessage.Builder().TopicRoom(room).Forward(false).Limit(10).Build(), (INResultSet <INTopicMessage> msgs) =>
            {
                messages = msgs;
                evt2.Set();
            }, (INError err) =>
            {
                error = err;
                evt2.Set();
            });
            evt2.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(messages);
            Assert.AreEqual(10, messages.Results.Count);
            foreach (var msg in messages.Results)
            {
                Assert.AreEqual(data, msg.Data);
            }
        }
Example #9
0
        public void MessageSendTopic()
        {
            INError error = null;

            ManualResetEvent evt1  = new ManualResetEvent(false);
            string           room  = "test-room";
            INTopic          topic = null;

            client1.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INResultSet <INTopic> topics1) =>
            {
                topic = topics1.Results[0];
                client2.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INResultSet <INTopic> topics2) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(topic);

            string            data       = "{\"some\":\"data\"}";
            INTopicMessage    message    = null;
            INTopicMessageAck messageAck = null;
            ManualResetEvent  evt2       = new ManualResetEvent(false);
            ManualResetEvent  evt3       = new ManualResetEvent(false);

            client1.OnTopicMessage = (INTopicMessage msg) =>
            {
                message = msg;
                evt2.Set();
            };
            client2.Send(NTopicMessageSendMessage.Default(topic.Topic, data), (INTopicMessageAck ack) =>
            {
                messageAck = ack;
                evt3.Set();
            }, (INError err) =>
            {
                error = err;
                evt2.Set();
                evt3.Set();
            });

            evt2.WaitOne(5000, false);
            evt3.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(message);
            Assert.IsNotNull(messageAck);

            Assert.AreEqual(userId2, message.UserId);
            Assert.AreEqual(TopicMessageType.Chat, message.Type);
            Assert.AreEqual(data, message.Data);

            Assert.AreEqual(messageAck.MessageId, message.MessageId);
            Assert.AreEqual(messageAck.CreatedAt, message.CreatedAt);
            Assert.AreEqual(messageAck.ExpiresAt, message.ExpiresAt);
            Assert.AreEqual(messageAck.Handle, message.Handle);
        }
Example #10
0
        public void MessageSendTopic()
        {
            INError error = null;

            ManualResetEvent evt1 = new ManualResetEvent(false);

            byte[]  room  = Encoding.UTF8.GetBytes("test-room");
            INTopic topic = null;

            client1.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INTopic topic1) =>
            {
                topic = topic1;
                client2.Send(new NTopicJoinMessage.Builder().TopicRoom(room).Build(), (INTopic topic2) =>
                {
                    evt1.Set();
                }, (INError err) =>
                {
                    error = err;
                    evt1.Set();
                });
            }, (INError err) =>
            {
                error = err;
                evt1.Set();
            });
            evt1.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(topic);

            byte[]            data       = Encoding.UTF8.GetBytes("{\"some\":\"data\"}");
            INTopicMessage    message    = null;
            INTopicMessageAck messageAck = null;
            ManualResetEvent  evt2       = new ManualResetEvent(false);
            ManualResetEvent  evt3       = new ManualResetEvent(false);

            client1.OnTopicMessage += (object source, NTopicMessageEventArgs args) =>
            {
                message = args.Message;
                evt2.Set();
            };
            client2.Send(NTopicMessageSendMessage.Default(topic.Topic, data), (INTopicMessageAck ack) =>
            {
                messageAck = ack;
                evt3.Set();
            }, (INError err) =>
            {
                error = err;
                evt2.Set();
                evt3.Set();
            });

            evt2.WaitOne(5000, false);
            evt3.WaitOne(5000, false);
            Assert.IsNull(error);
            Assert.IsNotNull(message);
            Assert.IsNotNull(messageAck);

            Assert.AreEqual(userId2, message.UserId);
            Assert.AreEqual(TopicMessageType.Chat, message.Type);
            Assert.AreEqual(data, message.Data);

            Assert.AreEqual(messageAck.MessageId, message.MessageId);
            Assert.AreEqual(messageAck.CreatedAt, message.CreatedAt);
            Assert.AreEqual(messageAck.ExpiresAt, message.ExpiresAt);
            Assert.AreEqual(messageAck.Handle, message.Handle);
        }
Example #11
0
 public void TopicSendMessage(NTopicMessageSendMessage message)
 {
     _client.Send(message, acks => { }, ErrorHandler);
 }