Я разрабатываю сервер WebSocket на C # и заметил, что все сообщения, поступающие из браузера (в данном случае Chrome) с использованием метода send (), имеют длину не более 126 символов.
Это происходит все время, когда я хочу отправлять сообщения размером более 126 символов, похоже, что протокол обрезает любое сообщение размером более 126 символов и передает только первые 126 символов.
Я попытался проверить определение протокола, но не нашел ответа.
Итак, мой вопрос, могу ли я отправлять большие сообщения через WebSockets?
UPDATE:
Это способ анализа сообщений от клиента (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);
}
}
}
Я до сих пор не понял, как я могу получить более крупное сообщение, возможно, что-то с кодом операции, но я не знаю, что изменить, чтобы оно работало?