java - 如何在使用 EventSource 库与 SSE 建立连接时传递标头
问题描述
我正在尝试使用 Java 和以下代码参考自动化服务器发送事件(SSE):
- https://github.com/BeTheCodeWithYou/Spring-Boot-SSE
- https://github.com/BeTheCodeWithYou/Spring-Boot-SSE/wiki
- https://medium.com/@bethecodewithyou/server-sent-events-development-test-automation-9ec74e2f71a
在使用 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
注意:作为参考,我已经传递了虚拟标题。
解决方案
推荐阅读
- html - 没有方法属性的表单可以正常工作吗?
- java - Android Studio:我有 100 个按钮,使用 onclick 函数是否可以获得我为其指定的 ID?
- azure-cosmosdb - 批量删除 cosmos DB 中的所有项目:404 未找到
- sql - 聚合字段与常量的聚合函数
- javascript - 如何在基于某些行记录数据加载时禁用 extJS 网格中的网格单元
- php - 在 XML 文件中计算多个价格并在 WP All Import 中只导入一个
- powershell - 如何一次删除多个文件名中下划线之前的所有字符?
- java - 有什么方法可以简化我的 java 代码?
- macos - 如果我没有配置 cron 作业,为什么 crontab 会运行我的脚本?
- rundeck - Rundeck 中的复选框选项