Есть целый ряд причин, чтобы использовать потоковый:
Он содержит много расфасованной, уже апробированную функциональность, которая часто является наиболее простым и надежным способом реализовать некоторую функцию передачи данных.
Streaming делает автоматическое управление потоком и буфер управления. Это позволяет управлять памятью управляемой величиной даже при потоковой передаче больших объектов.
Streaming обеспечивает стандартный интерфейс, который позволяет легко подключить в другом коде (например, преобразование, другие носители информации, и т.д. ...).
Там много обработки ошибок уже встроено.
ли или не использовать потоковый действительно каждый конкретный случай. Если вы знаете потоковое вещание, и вы просто пытаетесь отправить файл из точки A в точку B, я бы очень часто использовал потоковое вещание, если не было какой-то определенной причины (например, некоторая функция, которую вам сложнее реализовать с потоковой передачей).
Вы не показываете, как ваш непотоковые код работает, так что трудно для нас, чтобы сравнить вариант потокового непосредственно в код вы не показали, но вот догадка конкретных вопросов:
в чем преимущество использования socket.io-stream для загрузки файла на сервер?
См вышеуказанные пункты.
Если размер файла невелик (~ 300 КБ), мне нужно его передать?
«Необходимо потопить его», зависит от множества вещей. При 300 КБ и невозможности одновременного вылета тысяч из них в полете, вы, вероятно, «не нужны» для потока. Но я задал себе вопрос по-другому. Почему бы не потопить его? Если у вас есть готовый код, почему бы не использовать его?
Будет ли потоковое сохранение памяти сервера?
Это зависит от того, какую реализацию вы сравниваете, но поскольку потоковая передача имеет управление потоком и управляет буферизацией, она часто эффективна при использовании памяти.
Если я загружаю некоторые файлы (~ 8 МБ) через websocket с использованием кодировки base64, это будет плохо влиять на сервер?
Это зависит полностью от вашей реализации. Я бы не сказал, что webSocket особенно построен для оптимизации загрузки файлов. В большинстве случаев я бы, вероятно, использовал webSocket в качестве канала управления и делал большие загрузки файлов через HTTP-сервер, где uploads являются зрелой функцией. Во-первых, кодирование base64 не особенно эффективно для некоторых типов данных. Как http, так и webSocket поддерживают двоичные передачи, которые обычно более эффективны для файловых данных.
спасибо за ваше объяснение! –