Аннотация Java-клиент Cometd

В документации Cometd указано: Хорошим местом в коде для выполнения подписки является функция */meta/handshake. Поскольку прослушиватель /meta/handshake вызывается как при явных рукопожатиях, которые выполняет клиент, так и при повторных рукопожатиях, инициируемых сервером, гарантируется, что ваши подписки всегда выполняются правильно и поддерживаются в соответствии с состоянием сервера.* JavaScript и Inherited style не теряет абонентов при возобновлении подключения к сети. Подписчики теряются при использовании аннотированного java-клиента cometd для кода, как показано ниже. Как вы подписываетесь на канал внутри bayeuxClient.handshake(); метод с использованием аннотированного стиля.

Аннотированный стиль

@Service
public class Service
{
@Session
private ClientSession bayeuxClient;
@Listener(Channel.META_CONNECT)
public void metaConnect(Message connect)
{
    // Connect handling...
}
@Subscription("/foo")
public void foo(Message message)
{
    // Message handling...
}
}

Унаследованный стиль

ClientSession bayeuxClient = ...;

bayeuxClient.getChannel(Channel.META_CONNECT).addListener(new         ClientSessionChannel.MessageListener()
{
public void onMessage(ClientSessionChannel channel, Message message)
{
    // Connect handling...
}
});

bayeuxClient.handshake();
bayeuxClient.waitFor(1000, BayeuxClient.State.CONNECTED);

bayeuxClient.getChannel("/foo").subscribe(new ClientSessionChannel.MessageListener()
{
public void onMessage(ClientSessionChannel channel, Message message)
{
    // Message handling...
}
});

person user2263197    schedule 01.07.2013    source источник


Ответы (1)


Вы столкнулись с этой ошибкой, которая будет исправлена ​​в готовящемся CometD 2.7.0.

person sbordet    schedule 08.07.2013