Latest web development tutorials

HTML5의 서버 전송 이벤트 (서버 전송 이벤트)

HTML5 서버 이벤트 (서버 전송 이벤트) 웹 페이지가 서버에서 업데이트를 얻을 수 있습니다 보냅니다.


서버 전송 이벤트 - 방법 메시징

서버 전송 이벤트는 웹 사이트가 자동으로 서버에서 업데이트를 얻을 수있다.

이전에도 그렇게 할 수 있고, 페이지가 업데이트를 사용할 수 있는지 문의했다 한한다. 서버가 이벤트를 전송, 업데이트가 자동으로 도착합니다.

예 : 페이스 북 / 트위터 업데이트, 평가 업데이트, 새로운 블로그, 대회 결과 등.


브라우저 지원

Internet ExplorerFirefoxOperaGoogle ChromeSafari

서버가 인터넷 익스플로러뿐만 아니라, 이벤트를 전송하여 모든 주요 브라우저가 지원됩니다.


서버 전송 이벤트 알림 받기

EventSource 객체는 서버가 보낸 이벤트 알림을 수신하는 데 사용됩니다

var source=new EventSource("demo_sse.php");
source.onmessage=function(event)
{
    document.getElementById("result").innerHTML+=event.data + "<br>";
};

»시도

분석의 예 :

  • EventSource는 새로운 객체를 만든 다음 페이지의 갱신 규정의 URL을 보내 (이 경우, "demo_sse.php")
  • 각 업데이트를 수신의 onMessage 이벤트가 발생
  • 의 onMessage 이벤트가 발생하면, 수신 된 데이터는 ID 「결과」요소로 밀려

검색 서버 전송 이벤트 지원

다음 예는, 우리가 지원하는 이벤트를 송신하도록 서버에 브라우저를 검출하기 위해 추가적인 코드를 작성 :

(대한 typeof (EventSource)! == "정의")하는 경우
{
// 브라우저는 서버 전송을 지원합니다
일부 코드를//.....
}
그렇지 않으면
{
// 브라우저는 서버 전송을 지원하지 않습니다 ..
}


서버 측 코드의 예

위의 예를 확인하려면, 당신은 또한 (예 : PHP와 ASP 등) 서버를 업데이트하기 위해 데이터를 보낼 수 있어야 실행할 수 있습니다.

구 서버 측 이벤트 스트림은 매우 간단하다. "Content-Type"헤더는 "텍스트 / 이벤트 스트림"으로 설정되어 있습니다. 이제 이벤트 흐름을 보내는 시작할 수 있습니다.

<? php에
헤더 ( '콘텐츠 유형 : 텍스트 / 이벤트 스트림');
헤더 ( '캐시 제어 : 없음 -cache');

$ 시간 = 날짜 ( 'R' );
에코 "데이터 : 서버 시간은 {$ 시간} \ n \ n";
플러시 ();
?>

ASP 코드 (VB) (demo_sse.asp) :

<%
Response.ContentType="text/event-stream"
Response.Expires=-1
Response.Write("data: " & now())
Response.Flush()
%>

코드 설명 :

  • 헤더 "콘텐츠 유형"이 "텍스트 / 이벤트 스트림"으로 설정
  • 제공하지 캐시 페이지를 않습니다
  • 출력 전송 날짜 (항상 "데이터 :"처음에)
  • 출력 데이터 페이지를 새로 고침

EventSource 객체

상기 실시 예에서는 메시지의 onMessage 이벤트를 얻기 위해 사용된다. 그러나 다른 이벤트를 사용할 수 있습니다 :

事件 描述
onopen 当通往服务器的连接被打开
onmessage 当接收到消息
onerror 当发生错误