我使用Jersey连接服务器SSE频道(也使用Jersey实现)。
客户代码:
...
WebTarget target = client.target(uri);
EventSource client2es = new EventSource(target)
...
我的问题是new EventSource(target)
阻塞,直到服务器找到第一块数据。只要调用awaitFirstContact()
,Jersey EventSource实现就会调用EventSource.open
。
为什么必须等待第一次接触?如何连接到事件源而不阻塞客户端,直到服务器发送第一个数据块?
答案 0 :(得分:1)
查看EventSource的代码,json.loads
在awaitFirstContact()
方法中似乎没有必要。我认为肯定应该没有阻塞open
方法,因为其他处理是异步完成的。所以我认为你必须解决它。
open
构造函数中有第二个参数 - EventSource
。您可以在那里传递boolean open
,因此不会打开eventsource,而是创建新线程以在那里打开eventsource。
false