У меня возникла проблема с отправкой сообщения клиенту. Ниже мой кодCometD опубликовать сообщение обратно клиенту
JavaScript
dojox.cometd.publish('/service/getservice', {
userid : _USERID,
});
dojox.cometd.subscribe('/service/getservice', function(
message) {
alert("abc");
alert(message.data.test);
});
Configuration Servlet
bayeux.createIfAbsent("/service/getservice", new ConfigurableServerChannel.Initializer() {
@Override
public void configureChannel(ConfigurableServerChannel channel) {
channel.setPersistent(true);
GetListener channelListner = new GetListener();
channel.addListener(channelListner);
}
});
GetListener класс
public class GetListener implements MessageListener {
public boolean onMessage(ServerSession ss, ServerChannel sc) {
SomeClassFunction fun = new SomeClassFunction;
}
}
SomeClassFunction
class SomeClassFunction(){
}
здесь я создаю булеву переменную булево успеха; Если это правда, отправьте сообщение клиенту, который находится в javascript. как отправить сообщение клиенту. Я тоже пробовал эту линию.
remote.deliver(getServerSession(), "/service/getservice",
message, null);
, но это дает мне ошибку на удаленный объект и метод getServerSession.
perissf я сделал с этой техникой как и раньше, и он успешно отправляет сообщение клиенту. но я хочу в вышеупомянутом случае. потому что, если я буду использовать класс эха, он сначала вызовет класс someClassFunction, потому что я хочу отправить сообщение после выполнения someClassFunction, вы сказали мне концепцию авторизаторов, которую я должен изучить тогда. –
perissf, у меня есть идея, когда я его реализую, я дам вам знать. –
Что делать, если perissf, если я не хочу вызывать новое Echo (bayuex) из configurationservlet, что делать, если я хочу позвонить из определенного класса? потому что в случае конфигурацииServlet он должен вызвать свой конструктор из-за спецификации загрузки в web.xml. что, если я хочу позвонить из класса, я сделал это таким образом, но до сих пор не отображается сообщение. –