我是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);
}}
发布于 2011-12-13 02:21:30
在http://cometd.org上,你需要的一切都有。
为了构建一个非常简单的示例(带有Javascript客户端的web应用程序),您需要特别阅读:
服务器端的客户端side
在我链接的页面中有所有必要的代码,只需复制并粘贴即可。以防万一,带着更具体的问题回来。
编辑过的
查看代码后,我发现对于服务配置,您需要从here复制ConfigurationServlet类的代码,对于EchoService类,您需要修改processEcho方法,如下所示:
remote.deliver(getServerSession(), "/echo", data, null);其中data是定义为被解释的here的HashMap (第一个例子)。
在客户端,我会在发布你的请求之前订阅频道(我也不确定它是否能以你的方式工作)
https://stackoverflow.com/questions/8478130
复制相似问题