与sseemitter 406错误的jhipster微服务

问题描述 投票:0回答:1

我用网关uaa和微服务生成了jhipster应用程序。现在运行sse我添加了以下控制器

@RestController
@RequestMapping("/api")
public class AvgResultNftController {

    private final CopyOnWriteArrayList<SseEmitter> emitters = new CopyOnWriteArrayList<>();

    @GetMapping(path = "/avgResultNft")
    public SseEmitter getAvgResultNft() {
        SseEmitter emitter = new SseEmitter();
        this.emitters.add(emitter);

        emitter.onCompletion(() -> this.emitters.remove(emitter));
        emitter.onTimeout(() -> {
            emitter.complete();
            this.emitters.remove(emitter);
        });
        return emitter;
    }



    @SuppressWarnings("unlikely-arg-type")
    @EventListener
    public void onAvgResultNft(AvgResultNft avgResultNft) {
        List<SseEmitter> deadEmitters = new ArrayList<>();
        this.emitters.forEach(emitter -> {
            try {
                emitter.send(avgResultNft);
            } catch (Exception e) {
                deadEmitters.add(emitter);
            }
        });
        this.emitters.remove(deadEmitters);
    }

}

我在某些事件上发布了AvgResultNft。

我已生成角度应用程序并调用控制器

let source = new EventSource('http://192.168.1.5:8080/proxta/api/avgResultNft', {withCredentials: true })
source.addEventListener('message', message => {
      console.log(message)
    });

我在调用eventSource时遇到406不可接受的错误。请帮忙。

angular spring-boot server-sent-events
1个回答
0
投票

我认为它可以帮助你添加headers = "Accept=*/*"produces = MediaType.APPLICATION_OCTET_STREAM_VALUEMediaType.APPLICATION_STREAM_JSON_VALUE

@GetMapping(value = "/avgResultNft", headers = "Accept=*/*",
            produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
    public SseEmitter getAvgResultNft() {
        SseEmitter emitter = new SseEmitter();
        this.emitters.add(emitter);

        emitter.onCompletion(() -> this.emitters.remove(emitter));
        emitter.onTimeout(() -> {
            emitter.complete();
            this.emitters.remove(emitter);
        });
        return emitter;
    }

但要小心,zuul1.х不支持sse

How to make Server sent events (SSE) work trough Zuul Proxy spring-boot 2.1.1

© www.soinside.com 2019 - 2024. All rights reserved.