I've had to take this project offline!
I was expecting it to be abused and violated, but was completely naive to what the internet people were capable of.
Wow. That's all I can say. It was fun while it lasted, and it'll be back... some time.
For context, I was fully expecting swastikas and ASCII penises, but with this being text-only, I didn't think of covering a vital point in the code. The socket blindly accepted and persisted arbitrary content (when all it should store is a single character). Binary content flooded the server, and upon inspection, contained things that I didn't want to see. I thought it was best to turn it off and re-think the implementation for another rainy day.
The code is available at https://github.com/g105b/text. Feel free to check it out, fork it, whatever.