2013-07-01 6 views
0

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

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

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

ответ

0

Вы попали этот CometD bug, который будет зафиксирован в предстоящем CometD 2.7.0.

+0

Исправлено с cometd 2.7.0-beta1 ... – user2263197