Assignment 5: Does every peer need to know the public key of every other peer?
That would be one solution, then communication could happen without the server directly peer-to-peer.
However, this requires kind of a fat client, which knows about other clients.
A thin client solution would be to give the server a key pair too. Then, each client can encode messages with the servers public key, and the server can decode it and reencode it for every client with its public key.