Thanks for the reply. I agree with a lot of your thinking, but I believe you need to know a bit more about the context/application of this.
It does need to be real-time. The reason why it may need to be a customized client is because we are thinking of two modes: chat amongst folks in the MUC, and chat between the moderator and the folks in the MUC with regard to submitting questions to be posted/answered selectively.
The context of this customization is for a live seminar with a presenter, a moderator, and the audience. The audience has two things they can do during the presentation, they can chat amongst themselves in the MUC, or submit a question or comment to the moderator which could accept/reject and then be shown on large monitors at the presentation. The moderator could also forward the accepted questions to the presenter who could then answer the question as part of his/her presentation.
Naturally, if the moderator, presenter and audience members were “fluent” in the chat system, this would probably not need any customizations and could be handled through private messaging. However, the reality is that the everyone will be new to the system, so a customization on both server and client is needed to be able to make the process 100% intuitive.
The customizations I envision a custom client for audience members that allows both sending a message publicly to all other audience members (through a “send” button) and a way to send a question/comment to the moderator (through an “ask” button).
For the moderator, I envision a custom client that displays each submitted question/comment and allows the moderator to accept, reject, reply or forward each submitted question/comment.
For the persenter, I envision a simple client that displays each forwarded question/comment.
Additionally, Audience members might be restricted to an “audience” room. The moderator might be in a moderation room. The speaker might be in a speaker (or VIP) room. That way messages could be routed between rooms through the customizations, achieving the functionality desired. The folks at Embarcadero Dev Network did it this way and it seemed a logic and reasonable solution.
Now that I’ve explained my idea/goal, what suggestions/guidelines would you offer?