问题
How do I broadcast messages from only one client to another with Atmosphere (Meteor)?I have currently this implementation based on meteor tutorial
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
Meteor.build(req).addListener(new AtmosphereResourceEventListenerAdapter());
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException {
String body = req.getReader().readLine().trim();
//some DAO lookups - here I would like to say I want to broadcast only to concrete client
BroadcasterFactory.getDefault().lookup(DefaultBroadcaster.class, "/*").broadcast(UserDAO.getInstance().getUser(name));
}
回答1:
Here is the Atmosphere FAQ on their wiki: https://github.com/Atmosphere/atmosphere/wiki/Creating-private-channel-of-communication-between-Browsers
回答2:
Another solution I believe : for adressing only one client, you don't need to broadcast, you may just do this:
try
{
r.getResponse().write(message);
}
catch(IllegalStateException e)
{
logger.error("Could not send message through atmosphere " + userId);
}
where r is the resource that you can memorize in your program.
回答3:
BroadcasterFactory.getDefault().lookup(atmosphereResource.uuid()).broadcast('something');
来源:https://stackoverflow.com/questions/16156995/broadcast-to-only-one-client-with-atmosphere