Dart变化很快,所以我没有找到一种方法从HttpResponse获取数据流以通过websocket发送任意(甚至是二进制(数据。甚至文件 IO 目前也没有 openInput/OutputStream。目前在 dart 中使用数据流的概念是什么?
我实际上想获取一种抽象的数据流对象(如 C# 中的 System.IO.Stream(来实现序列化接口,然后将其应用于 websocket 数据流,这样我就可以在将来使用新的序列化程序实现更改网络数据包的序列化格式,或创建内存流对象(如 C# 中的 System.IO.MemoryStream(以获取内存中的序列化数据。
最后 - 是否可以使用 websocket 发送二进制数据?
谢谢。
dart:io
中的HttpRequest
实现Stream<List<int>>
.获取数据,请侦听流。最近在 http://api.dartlang.org/docs/releases/latest/dart_io/HttpRequest.html 的 API 文档中添加了示例。https://pub.dartlang.org/packages/http_server 的 http_server
包包含许多用于处理 HTTP 的实用程序类。
WebSocket
实现了Stream
和StreamSink
。在流上侦听时,接收的对象将是 String
或 List<int>
类型,具体取决于发送的是字符串消息还是二进制数据消息。同样,您可以将 String
和 List<int>
类型的对象添加到WebSocket
以发送消息。
收到的二进制数据将是来自dart:typed_data
库的 Uint8List
类型。我建议在发送二进制数据时使用Uint8List
。
由于WebSocket
使用流,因此流的所有功能(包括转换(都可用。