所以我是csharp的新手,我需要使用protobuf+websocket与服务器通信(在go中实现)。我最初的实现看起来像这样
var command = new Command
{
//some fields
}.ToByteArray();
_websocketClient.SendAsync(command);
在哪里
_websocketClient
使用websocket-sharp客户端。但是,在服务器端我无法从请求中解组字节并得到错误proto: Command: illegal tag 0 (wire type 1)
。这是原型生成代码的错误。看起来我发送的字节不知何故无效。然后我切换到这个实现
using var ms = new MemoryStream();
command.WriteDelimitedTo(ms);
_websocketClient.SendAsync(ms.GetBuffer());
现在一切正常。所以看起来这是由结构序列化的方式引起的。但是我没有找到任何文档来解释 writeDelimitedTo 实际上做了什么以及它与 ToByteArray() 有何不同。有人可以向我解释导致我的第一次实施失败的区别是什么吗?非常感谢,非常感谢!