2011-12-12 76 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 –