Пример #1
0
        /// <summary>
        /// "правильный" выход из программы через отключение пользователя
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //готовим пакет на отключение и отправляем его на сервер
            chatPacket packet = new chatPacket();
            await con.sendString(JsonConvert.SerializeObject(packet.closeCommand(me)));

            Application.Exit();
        }
Пример #2
0
    public static chatPacket Deserialize(byte[] data)
    {
        chatPacket result = new chatPacket();

        using (MemoryStream m = new MemoryStream(data))
        {
            using (BinaryReader reader = new BinaryReader(m))
            {
                result.packetID   = reader.ReadInt32();
                result.textString = System.Text.Encoding.Default.GetString(reader.ReadBytes(Constants.BUFFER_SIZE));
            }
        }
        return(result);
    }
Пример #3
0
    void processNetPackets()
    {
        Packet incomingPacket = Net.ReadPacket();

        while (incomingPacket != null)
        {
            byte[] rawBits = new byte[incomingPacket.Size];
            incomingPacket.ReadBytes(rawBits);

            chatPacket newMessage = chatPacket.Deserialize(rawBits);

            printOutputLine("Chat Text: " + newMessage.textString.ToString());
            printOutputLine("Received Packet from UserID: " + incomingPacket.SenderID.ToString());
            printOutputLine("Received Packet ID: " + newMessage.packetID.ToString());

            // Look to see if there's another packet waiting
            incomingPacket = Net.ReadPacket();
        }
    }
Пример #4
0
        private async void button1_Click(object sender, EventArgs e)
        {
            //определяем себя
            chatUser me = new chatUser();

            me.login = loginBox.Text;
            chatPacket packet = new chatPacket();
            //готовим пакет на аутентификацию
            string strJson = JsonConvert.SerializeObject(packet.authCommand(me));

            //формируем коннектор
            c = new connector();
            //готовим параметры подключения
            Dictionary <string, object> d = new Dictionary <string, object>();

            d.Add("uri", new Uri("ws://localhost:64636/Chat"));
            //инициализируем подключение
            c.initialize(d);
            //открываем подключение
            await c.open();

            //отправляем подключение
            await c.sendString(strJson);

            //получаем ответ
            string message = await c.reciveString();

            //разворачиваем ответ
            chatMessage answer = JsonConvert.DeserializeObject <chatMessage>(message);

            //если получили ответ с guid то считаем что подключение удалось
            if (answer.userSender.id != Guid.Empty)
            {
                //открываем основную форму
                ((ChatForm)this.Owner).saveConnection(c, answer.userSender);
                this.Close();
            }
        }
Пример #5
0
    void sendChat(string chatMessage)
    {
        switch (currentState)
        {
        case states.NOT_INIT:
            printOutputLine("The app has not initialized properly and we don't know your userID.");
            break;

        case states.IDLE:
        case states.REQUEST_FIND:
        case states.FINDING_ROOM:
        case states.REQUEST_JOIN:
        case states.REQUEST_CREATE:
        case states.REQUEST_LEAVE:
        case states.IN_EMPTY_ROOM:
            printOutputLine("You need to be in a room with another player to send a message.");
            break;

        case states.IN_FULL_ROOM:
        {
            chatPacket newMessage = new chatPacket();

            // Create a packet to send with the packet ID and string payload
            lastPacketID++;
            newMessage.packetID   = lastPacketID;
            newMessage.textString = chatMessage;

            Oculus.Platform.Net.SendPacket(remoteUser.ID, newMessage.Serialize(), SendPolicy.Reliable);
        }
        break;

        default:
            printOutputLine("You have hit an unknown state.");
            break;
        }
    }