Hi Ben, I'm sure tapestry-cometd can handle this. Just add a PushTarget component to each user's page providing a "topic" and an "event". Messages are pushed to the PushTargets via PushManager.broadcast(topic, message). Every message will fire the component event and will either return a block or add a script via the AjaxResponseRenderer (or both). The response is then pushed to the client. Block updates will either append or prepend to the PushTarget's element or will replace the current contents.
One improvement that could be made to tapestry-cometd is to allow 1 PushTarget to subscribe to multiple topics. This way each user could have a private topic (for peer to peer messages) and a public topic that everyone can see. The current workaround is to have two PushTargets on a page. More info here: https://github.com/uklance/tapestry-cometd/wiki/Pushing-javascript-to-the-client https://github.com/uklance/tapestry-cometd Demo app here: https://github.com/uklance/tapestry-cometd-demo
