при использовании protobuf делать примерно так (пример из ip-протоколов):
- получил пакет
- прочитал из него хидер (заранее известные N байт)
- по хидеру определил тип пакета
- спарсил пакет в структуру в зависимости от типа
?
На данный момент всё, что я нашел, из well-known применений — тупо proto.Unmarshall в определенный тип структуры.
Это может быть и удобно для чего-то rest-подобного, когда ты точно знаешь, какой ответ должен быть при обращении на некий URL. Сто урлов - сто типов ответов.
Но мне нужно использовать что-то вроде, например, nats-streaming или NSQ: а создавать по каналу для каждого из возможных типов пакетов - как-то бредово
А зачем вам тогда нужен протобуф? Хотя конечно и на нем можно, но в принципе как и описали.
Во-первых, посмотри в сторону grpc https://grpc.io/docs/tutorials/basic/go.html
Во-вторых, можно накостылить вот примерно так https://github.com/haochi/protobuf-stream-go
Обсуждают сегодня