Что такое концепция дротика о потоках данных?
Дротик быстро менялся, поэтому я не нашел способа получить поток данных из HttpResponse для отправки произвольных (даже двоичных) данных через веб-сокет. Даже файловый ввод-вывод пока не имеет openInput/OutputStream. Какова концепция для работы с потоками данных в дартс в настоящее время?
Я на самом деле хотел бы получить вид абстрактного объекта потока данных (например, System.IO.Stream в C#) для реализации интерфейса сериализации с ним, а затем применить его к потоку данных websocket, чтобы я мог изменить формат сериализации для своих сетевых пакетов с новыми реализации сериализатора в будущем или создания объекта потока памяти (например, System.IO.MemoryStream в C#) для получения сериализованных данных в памяти.
И, наконец, можно ли вообще отправлять двоичные данные с помощью веб-сокетов?
Thanx.
1 ответ
HttpRequest
в dart:io
инвентарь Stream<List<int>>
, Чтобы получить данные, слушайте в потоке. Пример был недавно добавлен в документ API по адресу http://api.dartlang.org/docs/releases/latest/dart_io/HttpRequest.html. http_server
Пакет на https://pub.dartlang.org/packages/http_server содержит ряд служебных классов для обработки HTTP.
WebSocket
реализует оба Stream
а также StreamSink
, При регистрации в потоке полученные объекты будут иметь тип String
или же List<int>
в зависимости от того, было ли отправлено строковое сообщение или сообщение двоичных данных. Также вы можете добавлять объекты типа String
а также List<int>
к WebSocket
отправлять сообщения.
Полученные двоичные данные будут иметь тип Uint8List
от dart:typed_data
библиотека. Я буду рекомендовать использовать Uint8List
при отправке двоичных данных.
Как WebSocket
использует потоки, все функции для потоков, включая преобразование доступны.