реализация в комете - PullRequest
       34

реализация в комете

4 голосов
/ 12 декабря 2011

Я новичок в 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 Ответ

4 голосов
/ 12 декабря 2011

Вкл. http://cometd.org есть все, что вам нужно.

Чтобы создать очень простой пример (веб-приложение с клиентом Javascript), вам необходимо прочитать, в частности:

  • Это для стороны клиента
  • Это для стороны сервера (конфигурация)
  • Это для серверасторона (код).Из этого меню вы можете начать с использования первого и третьего пунктов: «Наследуемые сервисы» для кода, отображающего вводимое сообщение, и «Интеграция серверных сервисов» для настройки сервера Bayeux через сервлет конфигурации.

На ссылочных страницах есть весь необходимый код, просто скопируйте и вставьте его.В этом случае вернитесь с более конкретными вопросами.


EDITED

После просмотра вашего кода я вижу, что для конфигурации службы вам необходимо скопировать код для класса ConfigurationServlet из здесь , а для класса EchoService вам нужно изменить метод processEcho следующим образом:

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

, где data - это HashMap, определенный как объяснено здесь (первый пример).

На стороне клиента я бы подписался на канал перед публикацией вашего запроса (я тоже не уверен, работает ли он по-вашему)

...