2013-04-22 16 views
5

を持つ1つのクライアントだけに?私は現在、この実装私はそれはおそらくばかな質問ですけどブロードキャスト私は雰囲気(流星)と別の1つのクライアントだけからのメッセージをブロードキャストするにはどうすればよい雰囲気

@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)); 
} 

流星のチュートリアルに基づいていますしかし、私はこのトピックに関する情報を見つけられなかったので、私はここで尋ねています:)何かヒントありがとう。

答えて

3

私は信じているもう一つの解決策:1つのクライアントだけをadressingために、あなたはブロードキャストする必要はありません、あなただけのこの操作を行うことがあります。

 try 
    { 
     r.getResponse().write(message); 
    } 
    catch(IllegalStateException e) 
    { 
     logger.error("Could not send message through atmosphere " + userId); 
    } 

ここで、rはプログラム内で覚えることができるリソースです。

+0

私は 'AtmosphereResource'を別のクラスの静的Mapに保存しています。次にそれらを反復し、あなたが示した 'write'メソッドを呼び出しますが、クライアントは何も受け取っていません。 – kiltek

+0

@kiltekこれはしばらくしていますが、このソリューションはhttpセッションのように動作します。だから、別の時間にそれを保つことはできません。単に "セッション"でそれを使用してください。 – unludo

0
BroadcasterFactory.getDefault().lookup(atmosphereResource.uuid()).broadcast('something'); 
+0

これは廃止され、完全に破棄されました。 – kiltek

関連する問題