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.

Reply via email to