彗星文档状态:在代码中执行订阅的一个好地方是*/meta/hankhake函数。由于在客户端执行的显式握手和服务器触发的重新握手中都会调用/meta/hshake侦听器,因此可以保证您的订阅始终正确执行,并与服务器状态保持一致*当网络连接恢复时,JavaScript和继承样式不会失去订阅者。订阅服务器在使用带注释的cometd java客户端执行代码时丢失,如下所示。如何订阅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...
}
});
您遇到了CometD错误,该错误将在即将发布的CometD2.7.0中修复。