Как читать поток событий SSE на стороне сервера вместо браузера - PullRequest
0 голосов
/ 21 октября 2018

Я создаю приложение для чтения потока событий и хранит информацию в моей базе данных.

У меня есть URL: http://xx.xx.xx.xx:8080/restconf/streams/mno-vnf-event/json требуемые заголовки: Accept:text/event-stream, Authorization:Basic YWRtaW46o99RtaW4-, Content-Type:application/yang-data+json

Теперь я хочу получить поток из API выше, используя java (не код javascript), у любого есть идея сделать это.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Если сервер SSE строго следует спецификации SSE, вы не можете добавить какие-либо пользовательские заголовки.

Тем не менее, если это так, пробовали ли вы что-то подобное с Spring WebFlux Client:

ResolvableType type = forClassWithGenerics(ServerSentEvent.class, String.class);

WebClient client = WebClient.create();
client.get()
      .uri("http://localhost:8080/sse")
      .accept(TEXT_EVENT_STREAM)
      .header("MyHeader", "Foo") // Add your headers here.
      .exchange()
      .flatMapMany(response -> response.body(toFlux(type)))
      .subscribe(System.out::println,
                 Throwable::printStackTrace);

Я проверил этот кусок кода на сервере SSE Undertow.Кажется, работает: Undertow может получить отправленный пользовательский заголовок.

0 голосов
/ 23 октября 2018

Вы можете использовать некоторые библиотеки Java, которые поддерживают SSE:

Это первое, что приходит мне в голову, но, несомненно, их больше.

...