2011-12-12 59 views
4

我是cometD的新手,是否有任何簡單的例子來實現服務通道模型的情況下的響應/請求模型。我見過cometd.org,但是如果我發佈到任何頻道,如何發送回覆就沒有這樣的例子。在cometD中實現

這是客戶端

alert("channel published1"); 
    dojox.cometd.publish('/service/getlist'); 
    alert("channel published"); 
    dojox.cometd.subscribe('/service/getlist', function(message) { 
     alert(message); 
    }); 

這是服務器端的 「ConfigurationServlet」

bayeux.createIfAbsent("/service/getlist", new ConfigurableServerChannel.Initializer() { 

     //new EchoService(bayeux); 
     @Override 
     public void configureChannel(ConfigurableServerChannel channel) { 
      /*channel.setPersistent(true); 
      GetListChannelListener channelListner = new GetOrderListChannelListener(); 
      channel.addListener(channelListner);*/ 
      new EchoService(bayeux); 
     } 
    }); 

EchoService的

public class EchoService extends AbstractService{ 
public EchoService(BayeuxServer bayeuxServer)         
{ 
    super(bayeuxServer, "getlist");            
    addService("/service/getlist", "processEcho");          
} 

public void processEcho(ServerSession remote,Map<String, Object> data) 
{  
    try{ 
    System.out.println("Start Process Echo"); 
    getBayeux().getChannel("/service/getlist").publish(getServerSession(), "Hello", null); 
    System.out.println("End Process Echo"); 
    }catch(Exception exp){ 
     exp.printStackTrace(); 
    } 
    //remote.deliver(getServerSession(), "/service/getlist", data, null);     
} 

}

回答

4

http://cometd.org的re是你需要的一切。

爲了建立一個非常簡單的例子(使用JavaScript客戶端Web應用程序),你需要特別閱讀:爲客戶端

  • This服務器端

    • This(配置)
    • This服務器端(代碼)。在此菜單中,您可能需要先使用第一和第三個項目符號:用於迴應輸入消息的代碼的繼承服務,以及用於通過配置Servlet設置Bayeux服務器的服務器服務集成。

    在我已鏈接的頁面中有所需的所有代碼,只需複製並粘貼即可。萬一,回來更具體的問題。


    EDITED

    看你的代碼後,我看到,對於服務配置,你需要爲ConfigurationServlet類的代碼從here和EchoService的類副本,需要進行如下修改processEcho方法:

    remote.deliver(getServerSession(), "/echo", data, null); 
    

    data被定義爲HashMap中說明here(第一實例)。

    在客戶端,我訂閱頻道發佈您的請求之前(我不知道,如果它在你的工作方式要麼)

  • +0

    感謝您的評論。我現在在學習時遇到了一個問題,即假設我已經在javascript中發佈和頻道並訂閱。發佈時我正在調用一個servlet。現在我有點在這裏混淆如何發送一個味精回到客戶端(JavaScript)從servlet。我看過一個例子,但我沒有理解這裏的觀點。 –

    +0

    請更新您的問題,添加您到目前爲止寫的代碼 – perissf

    +0

    perissf我已更新我的問題。請看一看。 Thnx –