0
詳細解釋後的進一步分析 Cometd javascript client doesn't subscribe to broadcast channel。cometd javascript客戶端可以在客戶端訂閱和服務器重啓時收到廣播消息
如果Cometd-Spring程序開始廣播新消息並且稍後訂閱cometd javascript客戶端,則客戶端無法接收新廣播消息。但是,客戶端在啓動cometd服務器後開始接收廣播消息。
廣播信道:/通知
客戶端代碼:
function _metaHandshake(handshake)
{
if (handshake.successful === true)
{
cometd.batch(function(){
cometd.subscribe('/notification', function(message){
console.log("Received Data ::"+JSON.stringify(message.data));
});
});
}
}
服務器代碼:
@javax.inject.Named
@javax.inject.Singleton
@Service("notificationService")
public class NotificationService {
@Inject
private BayeuxServer bayeuxServer;
@Session
private LocalSession session;
@Configure("/notification")
public void configureServiceChannel(ConfigurableServerChannel channel)
{
channel.setPersistent(true);// channel persistent
channel.addAuthorizer(GrantAuthorizer.GRANT_ALL);
}
public void onExternalEvent(Map<String, Object> data)
{
this.bayeuxServer.getChannel("/notification").publish(this.session, data);
}
}
欲瞭解更多信息 - 訂閱後客戶端不會收到新的廣播消息... – user2263197
啓用調試日誌記錄並仔細檢查是否沒有實例化2個BayeuxServer實例。請參閱http://docs.cometd.org/reference/troubleshooting.html。 Spring文檔位於http://docs.cometd.org/reference/java_server.html#java_server_services_integration_spring。服務器和客戶端調試日誌是您最好的工具。您可以在CometD郵件列表(https://groups.google.com/forum/#!forum/cometd-users)中報告它們以進行更詳細的分析。 – sbordet