2013-07-01 5 views
0

Cometd 문서 상태 : 구독을 수행 할 코드의 위치는 * /meta/handshake 기능입니다./meta/handshake 리스너는 클라이언트가 수행하는 명시 적 핸드 셰이크에서 호출되고 서버 트리거를 다시 핸드 셰이크 (re-handshake) 할 때 호출되므로 항상 구독이 항상 올바르게 수행되고 서버 상태와 일관성이 유지됩니다. * JavaScript 및 상속 된 스타일은 네트워크 연결이 다시 시작될 때 가입자를 잃지 않습니다. 아래와 같이 코드에 주석이 달린 cometd java 클라이언트를 사용하면 구독자가 손실됩니다. bayeuxClient.handshake() 내부의 채널을 어떻게 구독하나요? 메서드를 사용하여 주석을 달았습니다.주석 Cometd Java 클라이언트

주석 스타일

@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 2.7.0에서 수정 될 예정이 CometD bug는했다.

+0

cometd 2.7.0-beta1로 고정 ... – user2263197