Каков максимальный размер текстового сообщения WebSocketSharp?

#c# #.net #websocket #size #message

Вопрос:

Я хотел бы знать: Каков максимальный размер текстового сообщения WebSocketSharp? Если строка сообщения превышает максимальный размер, будет ли она разделена на небольшие фрагменты данных и отправлена на сервер через websocket?

Ответ №1:

Глядя на исходный код, кажется, что максимального размера нет. Существует внутреннее поле FragmentLength со следующим комментарием

 /// <summary>
/// Represents the length used to determine whether the data should be fragmented in sending.
/// </summary>
/// <remarks>
///   <para>
///   The data will be fragmented if that length is greater than the value of this field.
///   </para>
///   <para>
///   If you would like to change the value, you must set it to a value between <c>125</c> and
///   <c>Int32.MaxValue - 14</c> inclusive.
///   </para>
/// </remarks>
 

Комментарии:

1. Поэтому, когда мы реализуем receiveasync , мы можем создать буфер любого размера, и сообщение, отправленное клиентом через websocket, будет разделено на куски в соответствии с размером буфера, верно?

2. Я точно не помню, но я думаю, что упомянутое поле инициализировано до 1016, что соответствует размеру фрагментов. Просто проверьте источник, выполнив поиск по имени поля ja.

3. Большое вам спасибо! Не уверен, что вы когда-нибудь использовали библиотеку WebSocket docs.microsoft.com/en-us/dotnet/api/… , Я нахожу, что у websocket-sharp есть некоторые ненадежные проблемы, и они не обновлялись в течение некоторого времени. Поэтому я подумываю о том, чтобы снова реализовать клиент и сервер websocket отдельно с помощью библиотеки websocket. Итак, каков размер фрагмента данных? Я вижу, что ReceiveAsync разделит данные на куски в зависимости от размера буфера, который мы настроили, я прав?

Ответ №2:

Я думаю, что неправильно говорить, что WebSocket имеет некоторую максимальную длину сообщений. Есть некоторый буфер, и если ваше сообщение будет больше, чем оно, вы получите свое сообщение по частям. Но только последняя часть будет иметь EndOfMessage=true.

Комментарии:

1. Спасибо, на самом деле я задаю вопрос о sdk: websocket-sharp, nuget.org/packages/WebSocketSharp/1.0.3-rc11 Относительно того, что вы упомянули, я предполагаю, что куски/фрагменты сообщения не соответствуют десериализации объекта json.

2. Я не знаю, как именно работает этот пакет, но я думаю, что десериализация объекта внутри него будет выполнена, когда будут получены все фрагменты.

Ответ №3:

Я думаю, что правильный способ-задать этот вопрос непосредственно на github https://github.com/sta/websocket-sharp

Комментарии:

1. Хорошо, я просто нахожу, что этот документ очень тихий.

2. действительно, вы правы, но обсуждение должно вестись в проблемной области проекта, фактически также здесь 😉 редактировать: проблема, похоже, не так хороша.