Comment by ycombinatrix

8 hours ago

Are your sockets in blocking or non-blocking mode?

If you are sequentially sending updates to each client in blocking mode, one single slow client will block execution and slow everything down for everyone. Basically forcing all clients to run as slowly as the slowest client.

In non-blocking mode, only the slow client will suffer. You will need to buffer the output individually per client because each one will consume the data at different rates.

Are you already using libuv?

You should also consider making typing updates unreliable or at least less reliable since they presumably aren't critical for gameplay e.g. dropping typing updates to a client if their send buffer is full will drastically improve performance on slow connections.