I am developing a WebSocket server with C #, and I noticed that all messages coming from the browser (in this case Chrome) using the send () method are 126 characters long. This happens all the time when I want to send messages larger than 126 characters, it seems that the protocol shortens any message larger than 126 characters and transmits only the first 126 characters. I tried to check the protocol definition, but could not find the answer.
So my question is: can I send large messages through WebSockets?
UPDATE: This is how I parse messages from the client (Chrome) on my C # WebSocket server:
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); } } }
I still do not understand how I can get a larger message, maybe something with the operation code, but I donβt know what to change to make it work?
udidu
source share