我正在 Angular 和 Spring Boot 中开发聊天应用程序。我在 Angular 中使用 EventSource
,在 Spring boot 中使用 ApplicationEventPublisher
接口(interface)。现在,我想将事件数据和事件名称从 Spring Boot 发送到 Angular,以便 eventSource.addListener("eventName", () => {})
将根据事件捕获事件-姓名。请告诉我如何将事件数据和事件名称从 Spring Boot 发送到 Angular。
我的 spring-boot Controller :
@CrossOrigin("*")
@RestController
public class MessageController {
@Autowired
MessageService messageService;
@Autowired
ApplicationEventPublisher applicationEventPublisher;
private static final Logger logger = LoggerFactory.getLogger(MessageController.class);
@GetMapping(value = "/event/")
public void getEvent(@RequestHeader(value = "Content-Type", defaultValue = "text/event-stream"))
{
logger.info("AWSTranslateController:: getEvent() method /event");
MessageEvent messageEvent = new MessageEvent (this, "receiver3", response);
applicationEventPublisher.publishEvent(messageEvent );
}
}
springboot MessageEvent POJO:
public class MessageEvent extends ApplicationEvent{
private static final long serialVersionUID = 1L;
private Object eventResponse;
private String eventName;
public MessageEvent(Object source, String eventName, Object eventResponse) {
super(source);
this.eventName = eventName;
this.eventResponse = eventResponse;
}
public Object getEventResponse() {
return eventResponse;
}
public String getEventName() {
return eventName;
}
}
最佳答案
在 Angular 方面创建一个监听服务,可能的解决方案是使用 WebSocket 概念。一旦您的套接字端口准备好接收请求,您就可以使用消息 ping 事件。
关于java - 如何将事件数据和事件名称从 Spring Boot 发送到 Angular?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58506090/