Ejemplo n.º 1
0
        private static void CreateGroupChat(string chatMember, DemoSharedSecret sharedSecret)
        {
            var chat = new GroupChatConnection <DemoSharedSecret, MessageObject>("localhost", chatMember, sharedSecret, true);

            chat.OnMessageReceived     += WriteMessage;
            chat.OnMetaMessageReceived += WriteMetaMessage;
            chat.Connect();
            chat.SendMessage(new MessageObject("Hello to bob"));

            Chats.Add(chat);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var storage = new InMemoryChatStorage <DemoSharedSecret>();
            var secret  = new DemoSharedSecret("KundeA", "KundeA_User", "4711Kunde", "In love");

            CreateGroupChat("alice", secret);
            InviteUser("bob", secret, storage);
            InviteUser("oliver", secret, storage);
            InviteUser("oliver", secret, storage);
            InviteUser("leia", secret, storage);

            Thread.Sleep(TimeSpan.FromSeconds(5));

            Chats.Reverse();
            foreach (var chat in Chats)
            {
                chat.Dispose();
                Thread.Sleep(TimeSpan.FromSeconds(1));
            }

            Console.WriteLine("Press return to exit");
            Console.ReadLine();
        }
Ejemplo n.º 3
0
        private static void InviteUser(
            string userName,
            DemoSharedSecret secret,
            InMemoryChatStorage <DemoSharedSecret> storage)
        {
            var queue = ToASCII(Guid.NewGuid().ToByteArray());

            // Send the public key over the line (the server is initiating this)
            var rabbitServer = new SimpleServerWelcomeConnection("localhost", queue, secret, storage);

            rabbitServer.Connect();

            rabbitServer.InitiateHandshake("alice");
            rabbitServer.WaitForHandshake();

            // Receive the public key from that channel
            var rabbitPhone = new SimpleClientWelcomeConnection("localhost", queue);

            rabbitPhone.OnSharedKeyExchanged += AddUserToGroupChat;
            rabbitPhone.Connect();

            rabbitPhone.InitiateHandshake(userName);
            rabbitPhone.WaitForHandshake();
        }
Ejemplo n.º 4
0
        private static void AddUserToGroupChat(IDisposable sender, string chatMember, DemoSharedSecret sharedSecret)
        {
            if (sharedSecret.ErrorCode == 0)
            {
                var chat = new GroupChatConnection <DemoSharedSecret, MessageObject>("localhost", chatMember, sharedSecret, true);
                chat.OnMessageReceived += WriteMessage;
                chat.Connect();
                chat.SendMessage(new MessageObject("Hello to alice"));

                Chats.Add(chat);
            }
            else
            {
                switch (sharedSecret.ErrorCode)
                {
                case ErrorCodes.DUPLICATE_I:
                    Console.WriteLine($"Can't add {chatMember}, because its already in the group.");
                    break;
                }
            }
        }