C# ile bir WebSocket sunucusu geliştiriyorum ve tarayıcıdan gelen tüm iletilerin (bu durumda Chrome), send() yöntemini kullanarak 126 karakter uzunluğunda olduğunu farkettim. Her zaman, 126 karakterden daha büyük mesaj göndermek istediğimde, protokolün daha sonra 126 karakterden daha büyük bir mesajı kesmesi ve sadece ilk 126 karakterin aktarılması gibi görünüyor. Protokol tanımını kontrol etmeye çalıştım ancak herhangi bir cevap bulamadı.WebSocket üzerinden daha büyük mesajları nasıl gönderebilirim?
Yani, sorum şu, WebSockets üzerinden daha büyük mesajlar gönderebilir miyim?
GÜNCELLEME: Bu benim C# WebSocket sunucusunda istemci (Krom) gelen mesajları ayrıştırma yoludur:
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);
}
}
}
Ben hala büyük mesaj almak nasıl anlamadı, Opcode ile belki bir şey, ama işe yaraması için ne değiştireceğimi bilmiyorum?
Sorularımın orada olduğunu ve herhangi bir cevap almadığını yazdım, daha spesifik olabilir misiniz lütfen? – udidu
[Bölüm 5.4] (http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17#section-5.4) – dtb
Bu konuda bana yardımcı olabilir misiniz? "Bu yüzden, hem şu anda 2 GB Web Soket mesaja kadar desteklemek bizim docs belirtmek isteriz: me müteşekkir olacak büyük boy mesajları almak yardımcı olacak herhangi bir sahte kod .. – udidu