首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cometD中实现

在cometD中实现
EN

Stack Overflow用户
提问于 2011-12-13 01:16:32
回答 1查看 2.6K关注 0票数 4

我是CometD的新手,有没有简单的例子来实现响应/请求模型中的服务通道模型?我见过cometd.org,但没有这样的示例来说明如果我发布到任何渠道,如何发送回响应。

这是客户端

代码语言:javascript
复制
alert("channel published1");
    dojox.cometd.publish('/service/getlist');   
    alert("channel published");
    dojox.cometd.subscribe('/service/getlist', function(message) {
        alert(message);
    });

这是服务器端的"ConfigurationServlet“

代码语言:javascript
复制
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

代码语言:javascript
复制
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);                  
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-13 02:21:30

http://cometd.org上,你需要的一切都有。

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

服务器端的客户端side

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

在我链接的页面中有所有必要的代码,只需复制并粘贴即可。以防万一,带着更具体的问题回来。

编辑过的

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

代码语言:javascript
复制
remote.deliver(getServerSession(), "/echo", data, null);

其中data是定义为被解释的here的HashMap (第一个例子)。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8478130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档