Estoy desarrollando un servidor WebSocket con C# y noté que todos los mensajes que provenían del navegador (Chrome en ese caso) utilizando el método send() tienen una longitud máxima de 126 caracteres. Ocurre todo el tiempo cuando quiero enviar mensajes de un tamaño mayor a 126 caracteres, parece que el protocolo corta cualquier mensaje más grande que 126 caracteres y transfiere solo los primeros 126 caracteres. Traté de verificar la definición del protocolo pero no encontré ninguna respuesta.¿Cómo puedo enviar mensajes más grandes a través de WebSocket?
Entonces, mi pregunta es, ¿puedo enviar mensajes más grandes a través de WebSockets?
ACTUALIZACIÓN: Esta es la forma en que estoy analizar los mensajes del cliente (cromo) en mi servidor de 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);
}
}
}
Todavía no entiendo cómo puedo obtener mensaje más amplio, tal vez sea algo con el código de operación, pero no sé qué cambiar para que funcione?
Escribí en mi pregunta que había estado allí y no encontré ninguna respuesta, ¿puede ser más específico, por favor? – udidu
[Sección 5.4] (http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17#section-5.4) – dtb
¿Puede ayudarme con eso? cualquier pseudo código que me ayude a recibir mensajes de gran tamaño estará agradecido. – udidu