Transport should support optional compression.
Compression needs to be able to be enabled per-message. This could be implemented as a message header that determines the content type.
This allows the game server to first send server and protocol settings to clients uncompressed, and compress all further messages.