[英]Node.js “ws” websocket server randomly disconnects client after ~30 seconds, error 1006
[英]JS WebSocket client with C# WebSocket Server error 1006
我正在嘗試將一些數據從C#編寫的服務器發送到JS編寫的瀏覽器客戶端。 當我發送12900字節大小的消息時,一切正常。 如果我將發送大小為67990字節的消息,則在服務器端將沒有錯誤,而在客戶端,則將斷開連接,並出現斷開連接錯誤1006,沒有其他解釋。 我在某處找不到與郵件大小相關的任何限制。 這是我要在其中發送數據的C#代碼。
byte[] data =getDecodedMessage(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dataResponse)));
stream.Write(data, 0, data.Length);
基於問題user3892585回答我換成bytesRaw.Length
與bytesRaw.LongLength
在WebSocket的數據傳輸我編碼功能。 完成此操作后,我沒有收到套接字錯誤。
public static byte[] getEncodedMessage(byte[] bytesRaw)
{
List<byte> bytesFormatted = new List<byte>();
bytesFormatted.Add(129);
int indexStartRawData = -1; // it doesn't matter what value is
// set here - it will be set now:
if (bytesRaw.LongLength <= 125)
{
bytesFormatted.Add(Convert.ToByte(bytesRaw.LongLength));
indexStartRawData = 2;
}
else if (bytesRaw.LongLength >= 126 && bytesRaw.LongLength <= 65535)
{
bytesFormatted.Add(126);
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 8) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength) & 255));
indexStartRawData = 4;
}
else
{
bytesFormatted.Add(127);
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 56) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 48) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 40) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 32) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 24) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 16) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength >> 8) & 255));
bytesFormatted.Add(Convert.ToByte((bytesRaw.LongLength) & 255));
indexStartRawData = 10;
}
// put raw data at the correct index
bytesFormatted.InsertRange(indexStartRawData, bytesRaw);
return bytesFormatted.ToArray();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.