将 .Net ApiController 中的协议缓冲对象发送到 protobuf.js
Sending Protocol Buffered object in .Net ApiController to protobuf.js
我正在尝试在 .net 中使用 Proto-buf c# 库。我正在使用 ApiController 和 System.Net.WebSockets 命名空间。它有一种获取传入消息的方法。
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
我需要一个流来使用 protobuf。我不确定如何使用此名称空间获得一个,因为它使用的是 ArraySegment。
我能够将 proto-buf 对象发送到 decode/protobuf.js,但现在已经在 js 客户端上构建了一个对象并正在发送到服务器。
示例 cust = Serializer.DeserializeWithLengthPrefix(result, PrefixStyle.Base128);
如果你只需要一个Stream
来反序列化,你可以使用:
var stream = new MemoryStream(buffer.Array, buffer.Offset, result.Count);
ArraySegment<byte>
已经包装了一个 byte[]
,所以您只需要创建一个 MemoryStream
包装相同的字节数组,具有正确的偏移量和长度。
我正在尝试在 .net 中使用 Proto-buf c# 库。我正在使用 ApiController 和 System.Net.WebSockets 命名空间。它有一种获取传入消息的方法。
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
我需要一个流来使用 protobuf。我不确定如何使用此名称空间获得一个,因为它使用的是 ArraySegment。
我能够将 proto-buf 对象发送到 decode/protobuf.js,但现在已经在 js 客户端上构建了一个对象并正在发送到服务器。
示例 cust = Serializer.DeserializeWithLengthPrefix(result, PrefixStyle.Base128);
如果你只需要一个Stream
来反序列化,你可以使用:
var stream = new MemoryStream(buffer.Array, buffer.Offset, result.Count);
ArraySegment<byte>
已经包装了一个 byte[]
,所以您只需要创建一个 MemoryStream
包装相同的字节数组,具有正确的偏移量和长度。