My understanding is that gob streams are unique. >From https://golang.org/pkg/encoding/gob/ "A stream of gobs is self-describing. Each data item in the stream is preceded by a specification of its type, expressed in terms of a small set of predefined types."
In my own rudimentary understanding/terms, it sends the struct definition once, then uses shorthand for it afterwards. E.g, how many bytes and what order. If you mix and match streams that send definitions in different orders, then chaos ensues. I think this is why people use other encoders in the scenario you're taking about. For a one to one stream gob works great, but in this multi scenario I don't think it does. Matt On Wed, Dec 23, 2020, 5:07 PM Artur Vianna <lordhowen...@gmail.com> wrote: > If i create a bytes.Buffer and a gob.Encoder, each time i write to a group > of connections i get "duplicate type received" and if i try and reuse the > encoder, i get "corrupted data" and "unknown type". > It seems i can't use both net.Conn.Write and gob.Encoder.Encode in the > same connection, i will try always encoding to a buffer in both unicast and > multicast like you said and report if it works. > > On Wed, 23 Dec 2020, 18:49 Robert Engels, <reng...@ix.netcom.com> wrote: > >> You need to encode once to a byte array then send the byte array on each >> connection. >> >> On Dec 23, 2020, at 3:45 PM, meera <lordhowen...@gmail.com> wrote: >> >> >> I am trying to create a package for game servers using gob. The current >> approach is an application level multicasting over TCP, having a gob >> encoder and decoder for each player connection, and set up a goroutine to >> receive and another to dispatch for each one. The code for the dispatcher >> is here. But summarized, it simply receives data from a channel and encodes >> it. >> >> The problem is that if i want to transmit a single piece of data to all >> players, this piece of data is encoded again and again for each connection, >> doing duplicate work. With less than 100 players this is not a problem, but >> with 300+ my machine is at almost 100% usage and the profiler shows that >> most of it is spent on encoding. Here's the issue on github. >> >> I tryied using a io.MultiWriter but gob complains of duplicate type >> received, and if i try to write the raw bytes from the gob.Encoder i get >> corrupted data. An option is using UDP Broadcasting but since gob expects a >> stream, i'm affraid i will run into unexpected behavior when packets start >> to be lost and fragmented. >> >> Does gob expect a single encoder and decoder to own the stream? Not >> allowing two encoders on the server for one decoder on the client? >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/0562184e-bbcc-44c9-adbf-37e8d5411c7cn%40googlegroups.com >> <https://groups.google.com/d/msgid/golang-nuts/0562184e-bbcc-44c9-adbf-37e8d5411c7cn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/CAE%3DAWBXN46idvqUbCsGs%2BZbZt%2BCj4MowJ4Ozj3_U9_6-68OWDw%40mail.gmail.com > <https://groups.google.com/d/msgid/golang-nuts/CAE%3DAWBXN46idvqUbCsGs%2BZbZt%2BCj4MowJ4Ozj3_U9_6-68OWDw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAD53Lr6m%2Bimmd-Db8Y7DcYk%2Bc-EBo7UxhAmJ-pA4CHHRQ5VNrA%40mail.gmail.com.