It depends on how you want to use it. If you just simply want external services to push JSON to the client and then write a whole lot of javascript to update the DOM then that's fine.
With tapestry-cometd I wanted to the option to write ZERO javascript by leveraging tapestry component events and templates. When a push message is broadcast, tapestry-cometd fires a tapestry component event which returns a block in much the same way as a normal component event. Tapestry-cometd captures the markup and any scripts added via AjaxResponseRenderer which are pushed to the client. The PushTarget is updated with the markup and scripts are executed. This means that the push event is handled inside the component, in the same way as a normal (non-push) component event, no extra service classes are required, no extra javascript is required