在cometD中实现

时间:2011-12-12 17:16:32

标签: java comet cometd

我是CometD的新手,在响应/请求模型的情况下,是否有任何简单的示例来实现服务通道模型。我见过cometd.org但是如果我发布到任何频道,没有这样的例子来回复发送回应。

这是客户端

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

}

1 个答案:

答案 0 :(得分:4)

http://cometd.org上,您可以找到所需的一切。

为了构建一个非常简单的示例(使用Javascript客户端的Web应用程序),您需要特别阅读:

    客户端
  • This
  • This用于服务器端(配置)
  • This用于服务器端(代码)。在此菜单中,您可能希望从使用第一个和第三个要点开始:用于回显输入消息的代码的继承服务,以及用于通过配置servlet设置Bayeux服务器的服务器服务集成。

在我链接的页面中,所有代码都是必需的,只需复制并粘贴即可。万一,请回答更具体的问题。


EDITED

在查看代码后,我发现对于服务配置,您需要从here复制ConfigurationServlet类的代码,对于EchoService类,您需要修改processEcho方法,如下所示:

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

data是按照here解释的HashMap(第一个例子)。

在客户端,我会在发布您的请求之前订阅该频道(我不确定它是否也能以您的方式运行)

相关问题