Управляет ли протокол Websocket отправкой больших данных порциями - PullRequest
0 голосов
/ 06 июля 2019

Привет, ребята. Мне просто интересно, обрабатывает ли протокол websocket отправку больших данных кусками.По крайней мере, зная, что это поможет мне сэкономить время.

Ответы [ 2 ]

1 голос
/ 07 июля 2019

Мне просто интересно, обрабатывает ли протокол веб-сокета отправку больших данных кусками ...

Зависит от того, что вы подразумеваете под этим.

WebSocketsпротокол основан на кадрах (не на потоковой основе)

Если вам интересно то, что "огромная полезная нагрузка будет доставлена ​​целым?"- ответ всегда «да».

Протокол WebSockets - это протокол на основе фреймов / сообщений, а не протокол потоковой передачи. Что означает , что протоколы обертывают и разворачивают сообщения таким образом, чтобы обеспечить порядок и целостность сообщений.Сообщения не получат ...

... в середине усечено (в отличие от TCP / IP, который является протоколом на основе потоковой передачи, где порядок сохраняется, но не границы сообщений).

Протокол WebSockets МОЖЕТ использовать фрагментированные «пакеты»

В соответствии со стандартом протокол может разбивать большие сообщения на более мелкие куски.У него тоже нет.

Существует проблема совместимости с 32-разрядной версией, которая делает некоторые клиенты / серверы фрагментируют сообщения на более мелкие фрагменты, а затем собирают их обратно на принимающей стороне (до onmessage вызывается обратный вызов).

Для мультиплексирования необходим прикладной уровень "чанкинг"

Отправка больших полезных нагрузок через одно соединение WebSocket вызовет проблему конвейерной передачи, когда другим сообщениям придется ждать доОгромная полезная нагрузка отправляется, принимается и (если требуется) повторно собирается.

На практике это означает, что большие полезные нагрузки должны быть фрагментированы прикладным уровнем.Такой подход «разделенного на части» прикладного уровня позволит мультиплексировать одно соединение WebSocket.

1 голос
/ 06 июля 2019

Согласно базовому кадрированию RFC-6455, максимальный размер ограничен 2 ^ 63 байтами, что означает, что он на самом деле зависит от реализации вашей клиентской библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...