Мне просто интересно, обрабатывает ли протокол веб-сокета отправку больших данных кусками ...
Зависит от того, что вы подразумеваете под этим.
WebSocketsпротокол основан на кадрах (не на потоковой основе)
Если вам интересно то, что "огромная полезная нагрузка будет доставлена целым?"- ответ всегда «да».
Протокол WebSockets - это протокол на основе фреймов / сообщений, а не протокол потоковой передачи. Что означает , что протоколы обертывают и разворачивают сообщения таким образом, чтобы обеспечить порядок и целостность сообщений.Сообщения не получат ...
... в середине усечено (в отличие от TCP / IP, который является протоколом на основе потоковой передачи, где порядок сохраняется, но не границы сообщений).
Протокол WebSockets МОЖЕТ использовать фрагментированные «пакеты»
В соответствии со стандартом протокол может разбивать большие сообщения на более мелкие куски.У него тоже нет.
Существует проблема совместимости с 32-разрядной версией, которая делает некоторые клиенты / серверы фрагментируют сообщения на более мелкие фрагменты, а затем собирают их обратно на принимающей стороне (до onmessage
вызывается обратный вызов).
Для мультиплексирования необходим прикладной уровень "чанкинг"
Отправка больших полезных нагрузок через одно соединение WebSocket вызовет проблему конвейерной передачи, когда другим сообщениям придется ждать доОгромная полезная нагрузка отправляется, принимается и (если требуется) повторно собирается.
На практике это означает, что большие полезные нагрузки должны быть фрагментированы прикладным уровнем.Такой подход «разделенного на части» прикладного уровня позволит мультиплексировать одно соединение WebSocket.