Yes, using a separate thread for each user is plain stupid. I came across a whole network community of people who do anti-thread propaganda based on their negative experience with threads because they all did something as idiotic as that. Any technology could be misused in most destructive ways. Number of threads can be fixed or configurable, one thread serving several users. But performance depends not just on the number of users but more on how much of data exchange is required for each. Anyway, 200 connected users looks like a pretty modest number.
Well, yes, making such generic engine makes perfect sense. Logic of processing data can be abstracted out, data types presented using generics. It does not even seem difficult.
However, it does not surprise me that you did not find such thing. I can hardly imagine who would do it and why. Maybe, for an article explaining the techniques, but I would not right such thing. It looks a bit too trivial to me to do such job just for article, sorry.
So… I only can advise you to do this job by yourself. I don't know what kind of help you might need, but — ask question. For a start, look at my past solutions here:
Multple clients from same port Number[
^],
automatic updater triggered via server[
^].
Good luck,
—SA