Я разрабатываю сервер 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);
}
}
}
Я так и не понял, как получить сообщение большего размера, возможно, что-то связано с кодом операции, но я не знаю, что изменить, чтобы оно работало?