스택큐힙리스트

서버 전송 이벤트(SSE) 및 이벤트 소스(EventSource)는 POST 방식으로 매개 변수를 전달할 수 있습니까? 본문

카테고리 없음

서버 전송 이벤트(SSE) 및 이벤트 소스(EventSource)는 POST 방식으로 매개 변수를 전달할 수 있습니까?

스택큐힙리스트 2023. 9. 7. 14:23
반응형

나는 Html5 Server Sent Events를 사용하고 있습니다. 서버 측은 Java Servlet입니다.

나는 서버에 전달하려는 json 배열 데이터가 있습니다.

'var source = new EventSource(../GetPointVal?id=100&jsondata= + JSON.stringify(data));

'

만약 배열 크기가 작다면, 서버 측에서 쿼리스트링을 가져올 수 있습니다.

하지만 배열 크기가 크다면 (수천 개의 문자일 수도 있음), 서버가 쿼리스트링을 가져올 수 없습니다.

쿼리스트링 길이 제한을 피할 수 있는 서버로 JSON 배열을 전달하기 위해, POST 방식을 사용할 수 있는지 가능한지 알 수 있을까요?

답변 1

아니오, SSE 표준은 POST를 허용하지 않습니다.

(기술적인 이유와는 무관하게 - 내가 알기로는, 사용 사례를 본적이 없는 것 같아요: 큰 데이터뿐만 아니라 사용자 정의 인증 체계를 구현하려면 GET 데이터에 암호를 넣지 않는 것이 안전상의 이유가 있습니다.)

'XMLHttpRequest'은 POST를 허용하므로, 옵션 중 하나는 오래된 long-poll/comet 방법으로 돌아가는 것입니다. (제 책인 'Data Push Apps with HTML5 SSE'은(는) 이를 어떻게 수행하는지에 대해 상세히 다루고 있습니다.)

또 다른 접근 방식은 사전에 모든 데이터를 &'POST' 개조해서 &'HttpSession' 안에 저장한 후 SSE 프로세스를 호출하는 것입니다. (SSE는 쿠키를 지원하므로 &'JSESSIONID' 쿠키는 잘 작동해야 합니다.)

참고로, 'standard' 는 POST를 사용할 수 없다고 명시하지는 않았습니다. 그러나 'XMLHttpRequest' 와는 달리 사용할 HTTP 메소드를 지정할 매개변수가 없으며, 전송하려는 데이터를 지정하는 방법도 없습니다.

답변 2

서버 보낸 이벤트(Server Sent Events, SSE)와 EventSource는 POST를 통해 매개변수를 전달할 수 있나요?

서버 보낸 이벤트(Server Sent Events, SSE)는 웹 애플리케이션에서 실시간으로 데이터를 받을 수 있는 기술입니다. EventSource는 SSE를 구현하는 JavaScript API로, 이를 통해 서버로부터 이벤트 스트림을 수신할 수 있습니다. 이 때, EventSource를 사용하여 POST 메서드를 통해 매개변수를 전달하는지에 대해 알아보겠습니다.

흔히 사용되는 HTTP 호출은 GET과 POST입니다. GET 방식은 주로 서버로부터 데이터를 요청할 때 사용되는 반면, POST 방식은 서버에 데이터를 전달할 때 사용됩니다. SSE는 기본적으로 서버에서 클라이언트로 단방향 통신을 구현하는 것이기 때문에, SSE 자체에서는 POST 방식으로 매개변수를 전송하는 기능을 제공하지 않습니다.

그러나 SSE와 EventSource는 JavaScript를 사용하여 웹 애플리케이션을 개발하는 방식이기 때문에, JavaScript의 XMLHttpRequest 객체를 통해 POST 방식으로 서버로 데이터를 전송할 수 있습니다. 이때 전달되는 데이터는 SSE와는 별개로 서버에서 처리됩니다.

따라서 SSE와 EventSource를 사용하는 경우, SSE는 데이터 스트림을 수신하고, 별도의 AJAX 요청을 통해 POST 방식으로 서버로 매개변수를 전달할 수 있습니다.

이와 같은 방법을 이용하면 SSE와 EventSource를 통해 실시간 데이터를 수신하면서, 필요한 경우에는 AJAX를 사용하여 POST 방식으로 데이터를 전송할 수 있습니다.

이번 에세이에서는 SSE와 EventSource를 통해 POST 방식으로 매개변수를 전달하는 것에 대해 알아보았습니다. 어떤 경우에는 실시간 데이터 수신과 함께 POST 방식으로 데이터를 전달해야 할 필요가 있을 수 있습니다. 이를 구현하기 위해서는 JavaScript의 XMLHttpRequest를 통해 별도의 AJAX 요청을 사용해야 합니다. 이를 통해 웹 애플리케이션을 더욱 기능적이고 다양한 방식으로 개발할 수 있습니다.

반응형
Comments