在完成this教程之后,我正在尝试设置Sse Emitter。当我打开html页面时,我会得到
Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation]
在客户端(javascript)上说无法连接到服务器。我尝试了其他各种教程,但是对于为什么我的代码无法正常工作,我一无所知。
我建立了一个干净的测试项目,仅包含且完全包含教程代码。
答案 0 :(得分:0)
当我遇到相同的问题时,我正在做其他事情。 下面的代码将其修复。
只需输入不匹配的媒体类型。
@GetMapping(value = "/api/push/notification",headers = "Accept=*/*", consumes = MediaType.ALL_VALUE, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public String doNotify(@RequestParam("authToken") String token, @RequestParam("clientId") String clientId, HttpServletResponse response) throws InterruptedException, IOException {
response.addHeader("charset","UTF-8");
final SseEmitter emitter = new SseEmitter(30000l);
service.addEmitter(clientId,emitter);
service.sendConnectedNotification(clientId);
emitter.onCompletion(() -> service.removeEmitter(clientId));
emitter.onTimeout(() -> service.removeEmitter(clientId));
return "Connected OK";
}
任何我的事件处理程序
@Async
public void doNotify(String clientId, Object data) {
SseEmitter emitter= emitters.get(clientId);
if(emitter!=null) {
try {
emitter .send(SseEmitter.event() .reconnectTime(30000)
.data(data,MediaType.APPLICATION_JSON)
.id(UUID.randomUUID().toString())
.name("Notification")
.comment("Client connection notification")
);
} catch (Exception e) {
emitters.remove(clientId);
}
}
}