我在 spring 4.0.5 中实现 WebSocket。客户端(浏览器)保持与服务器的连接。当我的服务层在后端更新一些记录时,我想通知客户端订阅了特定主题。
我希望我的控制器监听我的 ApplicationEvent 并将其发布到 WebSocket 客户端。这可能吗?
我在我的服务层中实现了另一个侦听器,它可以捕获事件。控制器无法监听ApplicationEvent是真的吗?
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;
import com.geneoz.service.event.MessageEvent;
@Controller
public class ApplicationEventObservorController implements ApplicationListener<MessageEvent> {
private static Logger logger = Logger.getLogger(ApplicationEventObservorController.class);
private SimpMessagingTemplate template;
@Autowired
public ApplicationEventObservorController(SimpMessagingTemplate template) {
logger.debug("Initialising ApplicationEventObservorController");
this.template = template;
}
@Override
public void onApplicationEvent(MessageEvent event) {
logger.debug("Captured event. " + event);
this.template.convertAndSend("/topic/update", event.toString());
}
}