首页 > 解决方案 > 如何在使用 EventSource 库与 SSE 建立连接时传递标头

问题描述

我正在尝试使用 Java 和以下代码参考自动化服务器发送事件(SSE):

在使用 EvenSource 库连接到流之前,我一直在传递标头。

public Map<String, String> subscribeClient(String uuid) throws InterruptedException {
    Headers.Builder headerBuilder = new Headers.Builder();
    String dummyHeader1 = "header1:value1";
    String dummyHeade2 = "header2:value2";
    headerBuilder.add(dummyHeader1);
    headerBuilder.add(dummyHeade2);

    Headers myHeader = new Headers(headerBuilder);

    EventHandler eventHandler = new ClientEventHandler();
    String url = String.format("https://stream.wikimedia.org/v2/stream/recentchange");
    EventSource.Builder builder = new EventSource.Builder(eventHandler, URI.create(url)).headers(myHeader);
    System.out.println("client establishing connection");
    try (EventSource eventSource = builder.build()) {
        eventSource.setReconnectionTimeMs(3000);
        eventSource.start();
        TimeUnit.SECONDS.sleep(5);
    }

    System.out.println("execution success");
    return new HashMap() {{
        put("status", "success");
    }};
}

在此行抛出以下错误:Headers myHeader = new Headers(headerBuilder);

'Headers(okhttp3.Headers.Builder)' is not public in 'okhttp3.Headers'. Cannot be accessed from outside package

注意:作为参考,我已经传递了虚拟标题。

标签: javaspring-bootheaderserver-sent-events

解决方案


推荐阅读