Как я могу отправлять более крупные сообщения через WebSocket?

Я разрабатываю сервер WebSocket на C # и заметил, что все сообщения, приходящие из браузера (в данном случае Chrome) с использованием метода send () максимальная длина составляет 126 символов. Это происходит постоянно, когда я хочу отправить сообщения размером более 126 символов, похоже, протокол вырезает любое сообщение, превышающее 126 символов, и передает только первые 126 символов. {{1} } Я попытался проверить определение протокола, но не нашел ответа.

Итак, у меня вопрос, могу ли я отправлять сообщения большего размера через WebSockets?

ОБНОВЛЕНИЕ: Это способ, которым я анализирую сообщения от клиента (Chrome) на моем сервере C # WebSocket:

    private void ReceiveCallback(IAsyncResult _result)
    {
        lock (lckRead)
        {
            string message = string.Empty;
            int startIndex = 2;
            Int64 dataLength = (byte)(buffer[1] & 0x7F); // when the message is larger then 126 chars it cuts here and all i get is the first 126 chars
            if (dataLength > 0)
            {
                if (dataLength == 126)
                {
                    BitConverter.ToInt16(buffer, startIndex);
                    startIndex = 4;
                }
                else if (dataLength == 127)
                {
                    BitConverter.ToInt64(buffer, startIndex);
                    startIndex = 10;
                }

                bool masked = Convert.ToBoolean((buffer[1] & 0x80) >> 7);
                int maskKey = 0;
                if (masked)
                {
                    maskKey = BitConverter.ToInt32(buffer, startIndex);
                    startIndex = startIndex + 4;
                }

                byte[] payload = new byte[dataLength];
                Array.Copy(buffer, (int)startIndex, payload, 0, (int)dataLength);
                if (masked)
                {
                    payload = MaskBytes(payload, maskKey);
                    message = Encoding.UTF8.GetString(payload);
                    OnDataReceived(new DataReceivedEventArgs(message.Length, message));
                }

                HandleMessage(message); //'message' -  the message that received

                Listen();
            }
            else
            {
                if (ClientDisconnected != null)
                    ClientDisconnected(this, EventArgs.Empty);
            }
        }
    }

Я так и не понял, как получить сообщение большего размера, возможно, что-то связано с кодом операции, но я не знаю, что изменить, чтобы оно работало?

7
задан wonea 30 May 2017 в 14:51
поделиться