코어 포인트
Server Send Events (SSE)는 스트림을 사용하여 데이터 및/또는 DOM 이벤트를 서버에서 클라이언트로 푸시하는 방법이며, 스포츠 점수 또는 주식 견적과 같은 데이터를 정기적으로 업데이트 해야하는 상황에 이상적입니다.
이벤트 소스 개체 생성을 사용하면 이벤트 스트림을 구독하고 열기, 메시지 및 오류 이벤트를 처리 할 수 있습니다.
서버에서 이벤트를 보내려면 헤더 (value ) 및 UTF-8 문자 인코딩을 사용하여 컨텐츠를 제공해야합니다. 서버가 이벤트를 보내기위한 구문에는 데이터, 이벤트 유형, 이벤트 식별자 및 재시도 간격이 포함됩니다.
이벤트 처리는 함수 (메시지 이벤트를 보내는 응용 프로그램에 대해서만)를 사용할 수 있지만 메소드는 사용자 정의 이벤트를 처리 할 수 있습니다. -
대부분의 최신 브라우저 (Chrome, Firefox 및 Safari 포함)는 서버 전송 이벤트 (SSE)를 지원하지만 Internet Explorer는 그렇지 않습니다. 모든 브라우저를 지원 해야하는 응용 프로그램의 경우 Websocket 또는 긴 폴링이 더 적절할 수 있습니다.
-
Content-type
text/event-stream
소개
스트림 구독 : EventSource Object
서버에서 이벤트를 보냅니다
메시지 이벤트 보내기
사용자 정의 이벤트 보내기
Retry Interval Management를 사용하여 다시 연결하십시오
id 필드 를 사용하여 고유 식별자를 설정하십시오
onmessage
addEventListener
처리 이벤트
처리 오류
브라우저 구현 차이
브라우저 지원 및 폴백 전략
귀하의 국가 농구 팀이 세계 농구 선수권 대회에 참여하고 있다고 가정합니다. 게임 시간이 근무 시간과 충돌하기 때문에 게임을 따르고 싶지만 볼 수는 없습니다. -
운 좋게도, 당신의 National News Service에는 매우 뛰어난 웹 개발 팀이 있습니다. 그들은 파울이나 점수가 발생할 때마다 업데이트되는 스포츠 정보 스크롤 디스플레이를 구축했습니다. URL을 방문하면 업데이트가 브라우저로 직접 푸시됩니다. 물론, 그들이 어떻게했는지 알고 싶을 것입니다. 대답은 : 서버가 이벤트를 보냅니다.
서버 보내기 이벤트는 스트림을 사용하여 데이터 및/또는 DOM 이벤트를 서버에서 클라이언트로 푸시하는 방법입니다. 재고 따옴표, 스포츠 점수, 비행 추적, 이메일 알림 - 데이터를 정기적으로 업데이트 해야하는 상황에 적합합니다.
기다려! 나는 당신이 말하는 것을 들었습니다. - 우리는 이미 xmlhttprequest 또는 websockets를 사용하여 이것을 할 수 없습니까? <.> 예, 예. 그러나이를 수행하려면 EventSource 자체의 기능을 구현하기 위해 이러한 객체를 확장해야합니다.
서버 측의 예방 조치
서버가 이벤트를 보내기 때문에 데이터 스트림이므로 장기 연결이 필요합니다. 많은 동시 연결을 처리 할 수있는 서버를 사용해야합니다. 물론 이벤트 중심의 서버는 특히 스트리밍 이벤트에 적합합니다. 여기에는 node.js, juggernaut 및 twisted가 포함됩니다. Nginx의 경우 Nginx-Push-Stream-Module 모듈을 사용할 수 있습니다. 그러나 서버 구성은이 기사의 범위를 벗어나고 사용중인 서버에 따라 다릅니다. - EventsOURCE 객체를 사용하여 스트림을 구독하는 방법을 살펴 보겠습니다. 그런 다음 이벤트가 전송되고 처리되는 방법을 볼 것입니다.
이벤트 스트림 구독 : EventSource Object
이벤트 소스 객체를 만드는 것은 간단합니다.
eventSource 생성자는 최대 두 개의 매개 변수를 수락합니다 :
URL 문자열 (필수) 및
옵션 사전 매개 변수 속성의 값을 정의하는 데 사용됩니다.
var evtsrc = new EventSource('./url_of/event_stream/',{withCredentials:false});
로그인 후 복사
로그인 후 복사
로그인 후 복사
사전은 객체와 구문 적으로 유사하지만 실제로는 이름 값 쌍이 정의 된 데이터 배열입니다. 이 경우 <<>는 가능한 유일한 사전 멤버입니다. 그 값은 참 또는 거짓일 수 있습니다. (사전에 대한 자세한 내용은 웹 IDL 사양을 참조하십시오.)
사전 매개 변수는 사용자 자격 증명 (쿠키)에 대한 크로스 도메인 요청 인 경우에만 필요합니다. 지금까지 브라우저는 크로스 도메인 이벤트 소스 요청을 지원하지 않습니다. 따라서 예제에 두 번째 매개 변수는 포함되지 않습니다.
이벤트 소스 연결이 열리면 <🎜
메시지 소스를 반환합니다. 메시지 소스는 일반적으로 메시지 (예 : http, https), 호스트 이름 및 포트를 보낼 수있는 체계가 포함 된 문자열입니다.
event.lasteventID
마지막 이벤트의 고유 식별자를 반환합니다. 메시지 이벤트가 트리거 될 때마다 우리의
기능이 호출됩니다. 이것은 메시지 이벤트를 보내는 응용 프로그램에 적합합니다. 그러나 점수 또는 이벤트를 보내려면 (이 예제에 표시된대로) 그 제한이 명백 해집니다. 를 사용하여 더 유연합니다. 다음 코드에서는 - 이벤트를 처리하기 위해
를 사용하고 있습니다. -
(두 번째 부분, 공간 제한으로 인해 단락으로 질문을하십시오.)
위 내용은 서버에 대한 이벤트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!