Exemple #1
0
 void newClient_OnPacketReceived(object sender, WSPacketReceivedEventArgs e)
 {
     //TODO: Собрать данные из разных пакетов в одно сообщение
     if (e.Packets.LastPacket.Opcode == 1)
     {
         onMessageReceived(byteArrayToString(e.Packets.LastPacket.Data), e.UID);
     }
     else if (e.Packets.LastPacket.Opcode == 2)
     {
         onBinaryReceived(e.Packets.LastPacket.Data, e.UID);
     }
     else if (e.Packets.LastPacket.Opcode == 8)
     {
         onClientQuit(e.UID, ByteManager.Int16FromBytes(e.Packets.LastPacket.Data[0], e.Packets.LastPacket.Data[1]));
     }
 }
Exemple #2
0
        // Получаем заявленную в пакете длину из полученных RAW-данных в массиве msg
        private UInt64 getLength(byte[] msg, ref int cursor)
        {
            UInt64 res = ByteManager.constructByte(msg[1], 0, 6);

            cursor = 2;
            if (res == 126)
            {
                res = ByteManager.Int16FromBytes(msg[cursor++], msg[cursor++]);
            }
            else if (res == 127)
            {
                res    = ByteManager.Int64FromBytes(msg, 2);
                cursor = 10;
            }

            return(res);
        }
Exemple #3
0
        private void ReceivingHandler(int uid, WSPacket packet, string header)
        {
            dataTotalLength += (uint)packet.Data.Length;
            traffic         += (uint)packet.HeadersLength;
            ConsoleColor clr = Console.ForegroundColor;

            switch (uid)
            {
            case 0: clr = ConsoleColor.Cyan;
                break;

            case 1: clr = ConsoleColor.Yellow;
                break;

            case 2: clr = ConsoleColor.Blue;
                break;
            }
            Consoler.WriteLine(header, clr);
            switch (packet.Opcode)
            {
            case 1:
                Consoler.WriteLine(byteArrayToString(packet.Data));
                break;

            case 2:
                Consoler.WriteLine("Получены бинарные данные!", ConsoleColor.Magenta);
                break;

            case 8:
                Consoler.WriteLine("Соединение закрыто удаленной стороной! Код причины: {0}", ConsoleColor.Magenta, ByteManager.Int16FromBytes(packet.Data[0], packet.Data[1]));
                Stop();
                break;

            case 9:
                Consoler.WriteLine("Получен пакет 'PING'!", ConsoleColor.Magenta);
                break;

            case 10:
                Consoler.WriteLine("Получен пакет 'PONG'!", ConsoleColor.Magenta);
                break;
            }
            Consoler.WriteLine();
        }