저지 SSE 클라이언트를 사용하여 Node.js 서버에서 스트리밍 된 SSE (서버 전송 이벤트)를 소비하기위한 기본적인 Java 응용 프로그램을 작성했습니다. 그러나 이벤트를 수신 할 수 없습니다. (저지 SSE 클라이언트가 이벤트를 수신하지 않습니다.
이* Trying ::1...
* Connected to localhost (::1) port 8080 (#0)
> GET /events/ HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.43.0
> Accept: text/event-stream
>
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: text/event-stream
< Cache-Control: no-cache
< Connection: keep-alive
< Date: Wed, 26 Apr 2017 17:12:00 GMT
< Transfer-Encoding: chunked
<
event: ping
data: 0.6637400726922664
event: ping
data: 0.8538157046725585
자바 내 SSE 클라이언트 코드는 다음과 같다 자바 : 나는 다음과 같은 응답을 얻을
curl -v -H "Accept: text/event-stream" http://localhost:8080/events/
을 예상대로 다음과 같이 서버 구성 요소, 내가 curl
을 사용 작동하는지 확인하려면 8, 뉴저지 클라이언트 1.19.3, 뉴저지 미디어 SSE 2.25.1는) :
import org.glassfish.jersey.media.sse.EventListener;
import org.glassfish.jersey.media.sse.EventSource;
import org.glassfish.jersey.media.sse.InboundEvent;
import org.glassfish.jersey.media.sse.SseFeature;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
public class NodeCaptureSSE {
public static void main(String[] args) {
Client client = ClientBuilder.newBuilder().register(SseFeature.class).build();
WebTarget target = client.target("http://localhost:8080/events/");
EventSource eventSource = EventSource.target(target).build();
EventListener listener = new EventListener() {
@Override
public void onEvent(InboundEvent inboundEvent) {
System.out.println(inboundEvent.getName() + "; " + inboundEvent.readData(String.class));
}
};
eventSource.register(listener, "ping");
eventSource.open();
System.out.println("Connected to SSE source...");
try {
Thread.sleep(25_000);
}
catch (InterruptedException ie) {
System.err.println("Exception: " + ie.getMessage());
}
eventSource.close();
System.out.println("Closed connection to SSE source");
}
}
내가 화면에 볼 수있는 유일한 출력은 다음과 같습니다
Connected to SSE source...
이어서 25 초 후에 종료됩니다. 서버는 이벤트 ("ping")라는 이름의 스트리밍을하기 때문에 리스너를 이벤트 소스에 등록하는 동안이를 지정했습니다. eventSource.register(...);
에 두 번째 매개 변수를 생략하면 아무 것도하지 않았지만 기대하지는 못했습니다. 또한 URL에서 /
결말을 제거했지만 예상대로 404 Not Found
이됩니다. 나는 올바른 방향으로 어떤 포인터를 얻길 바랍니다.
오랜 시간 동안 연결을 유지하는 방법이 있습니까?, 저지 sse 클라이언트는 브라우저처럼 작동합니까? –