2013-04-22 6 views
5

मैं कैसे वायुमंडल (उल्का) के साथ एक और करने के लिए केवल एक ही ग्राहक से संदेश प्रसारित करते हैं के साथ केवल एक ही ग्राहक के लिए? मैं वर्तमान में उल्का ट्यूटोरियल के आधार पर इस कार्यान्वयन हैप्रसारण वायुमंडल

@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

एक अन्य समाधान मेरा मानना ​​है कि: केवल एक ही ग्राहक संबोधित करने के लिए, आप का प्रसारण करने की जरूरत नहीं है, तो आप इस बस कर सकते हैं:

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

जहां आर संसाधन है जिसे आप अपने कार्यक्रम में याद कर सकते हैं।

+0

मैं किसी अन्य वर्ग में एक स्थिर मानचित्र में 'वायुमंडलीय संसाधन' की बचत कर रहा हूं। फिर उन पर पुन: प्रयास करें और आपके द्वारा दिखाए गए 'लेखन' विधि को कॉल करें, लेकिन ग्राहक को कुछ भी प्राप्त नहीं होता है। – kiltek

+0

@ किल्टेक यह थोड़ी देर हो गया है, लेकिन ऐसा लगता है कि यह समाधान http सत्र की तरह थोड़ा सा काम करता है। तो आप इसे किसी अन्य समय नहीं रख सकते हैं, बस इसे "सत्र" – unludo

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

में उपयोग करें, इसे हटा दिया गया था और अब पूरी तरह से बाहर फेंक दिया गया था। – kiltek

संबंधित मुद्दे