Baseline Widely available *
EventSource
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ããµã¼ãã¼éä¿¡ã¤ãã³ãã®ã¦ã§ãã³ã³ãã³ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ãã
EventSource
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ã HTTP ãµã¼ãã¼ã¨ã®éã§æ°¸ç¶çãªã³ãã¯ã·ã§ã³ãéããã¤ãã³ãã text/event-stream
ã®å½¢å¼ã§åãåãã¾ããã³ãã¯ã·ã§ã³ã¯ EventSource.close()
ãå¼ã³åºãã¦éããããã¾ã§éããã¾ã¾ã«ãªãã¾ãã
ã³ãã¯ã·ã§ã³ãéãããå¾ããµã¼ãã¼ããã®çä¿¡ã¡ãã»ã¼ã¸ã¯ãã¤ãã³ãã¨ããå½¢å¼ã§ã³ã¼ãã«é
ä¿¡ããã¾ããçä¿¡ã¡ãã»ã¼ã¸ã«ã¤ãã³ããã£ã¼ã«ããããå ´åãçºçããã¤ãã³ã ã¯ãã¤ãã³ããã£ã¼ã«ãã®å¤ã¨åãã«ãªãã¾ããã¤ãã³ããã£ã¼ã«ããåå¨ããªãå ´åãä¸è¬ç㪠message
ã¤ãã³ããçºè¡ããã¾ãã
WebSocket ã¨ã¯ç°ãªãããµã¼ãã¼éä¿¡ã¤ãã³ãã¯å䏿¹åã§ããã¤ã¾ãããã¼ã¿ã¡ãã»ã¼ã¸ã¯ãµã¼ãã¼ããã¯ã©ã¤ã¢ã³ãï¼ã¦ã¼ã¶ã¼ã®ã¦ã§ããã©ã¦ã¶ã¼ãªã©ï¼ã«åãã¦ã䏿¹åã«é
ä¿¡ããã¾ããããã¯ãã¡ãã»ã¼ã¸ã®å½¢ã§ã¯ã©ã¤ã¢ã³ããããµã¼ãã¼ã«ãã¼ã¿ãéãå¿
è¦ããªãå ´åã«ã¯è¯ã鏿ã§ããä¾ãã°ã EventSource
ã¯ã½ã¼ã·ã£ã«ã¡ãã£ã¢ã®è¿æ³ã¢ãããã¼ãããã¥ã¼ã¹ãã£ã¼ãã®ãããªãã®ãæ±ã£ãããã¯ã©ã¤ã¢ã³ãå´ã¹ãã¬ã¼ã¸ï¼IndexedDB ã web storage ãªã©ï¼ã®ä»çµã¿ã«ãã¼ã¿ãé
ä¿¡ãããããã¢ããã¼ãã«æç¨ã§ãã
è¦å: HTTP/2 ä¸ã§ä½¿ç¨ããã¦ããªãå ´åã SSE ã¯éãã¦ããæ¥ç¶ã®æå¤§æ°ã«å¶éãåãã¾ãããã®å¶éã¯ãã©ã¦ã¶ã¼ãã¨ã«ãããã¨ã¦ãä½ãæ° (6) ã«è¨å®ããã¦ããããããã¾ãã¾ãªã¿ããéãããã«ç¹å¥ãªçã¿ãä¼´ããã¨ãããã¾ãããã®åé¡ã¯ãChrome 㨠Firefox ã§ãä¿®æ£äºå®ãªããã¨è¡¨ç¤ºããã¦ãã¾ãããã®å¶éã¯ãã©ã¦ã¶ã¼ï¼ãã¡ã¤ã³ãã¨ãªã®ã§ã www.example1.com
ã¸ã® SSE æ¥ç¶ããã¹ã¦ã®ã¿ãã§ 6 ã¤ãwww.example2.com.
ã¸ã® SSE æ¥ç¶ãããã« 6 ã¤éããã¨ãã§ãããã¨ãæå³ãã¦ãã¾ãï¼Stackoverflow ããï¼ã HTTP/2 ã使ç¨ãã¦ããå ´åãåæã® HTTP ã¹ããªã¼ã ã®æå¤§æ°ã¯ãµã¼ãã¼ã¨ã¯ã©ã¤ã¢ã³ãã®éã§äº¤æ¸ããã¾ãï¼æ¢å®å¤ã¯ 100ï¼ã
EventSource()
æå®ãã URL ãããµã¼ãã¼ãï¼ãªãã·ã§ã³ã§è³æ ¼æ
å ±ã¢ã¼ãã§ï¼éä¿¡ããã¤ãã³ããå¦çããããã® EventSource
ãæ°è¦ã«ä½æãã¾ãã
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ã親ã§ãã EventTarget
ããããããã£ãç¶æ¿ãã¦ãã¾ãã
EventSource.readyState
èªåå°ç¨
æ°å¤ã§ãã³ãã¯ã·ã§ã³ã®ç¶æ
ã表ãã¾ããåãããå¤ã¯ CONNECTING
(0
)ãOPEN
(1
)ãCLOSED
(2
) ã§ãã
EventSource.url
èªåå°ç¨
æååã§ãã½ã¼ã¹ã® URL ã表ãã¾ãã
EventSource.withCredentials
èªåå°ç¨
è«çå¤ã§ã EventSource
ãªãã¸ã§ã¯ãããªãªã¸ã³é (CORS) è³æ ¼æ
å ±ãè¨å®ãã¦ã¤ã³ã¹ã¿ã³ã¹åãããã (true
)ãè¨å®ãããã«ã¤ã³ã¹ã¿ã³ã¹åãããã (false
ãæ¢å®å¤) ã示ãã¾ãã
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ã親ã§ãã EventTarget
ããã¡ã½ãããç¶æ¿ãã¦ãã¾ãã
EventSource.close()
ã³ãã¯ã·ã§ã³ãåæãã¦ã readyState
屿§ã CLOSED
ã«è¨å®ãã¾ãããã§ã«åæããã¦ããå ´åã¯ä½ãè¡ãã¾ããã
error
ã¤ãã³ãã½ã¼ã¹ã¸ã®ã³ãã¯ã·ã§ã³ãéããã¨ã«å¤±æããã¨ãã«çºçãã¾ãã
message
ã¤ãã³ãã½ã¼ã¹ãããã¼ã¿ãåä¿¡ããã¨ãã«çºçãã¾ãã
open
ã¤ãã³ãã½ã¼ã¹ã¸ã®ã³ãã¯ã·ã§ã³ãéãããã¨ãã«çºçãã¾ãã
ããã«ãã¤ãã³ãã½ã¼ã¹èªèº«ãã¤ãã³ããã£ã¼ã«ããæã¤ã¡ãã»ã¼ã¸ãéä¿¡ãããã®å¤ããã¼ã«ããã¢ãããã¯ã¤ãã³ãã使ãããã¨ãã§ãã¾ãã
ä¾ãã®åºæ¬çãªä¾ã§ã¯ã EventSource
ãçæãã¦ãµã¼ãã¼ããã¤ãã³ããåãåãã¾ãã sse.php
ã¨ããååã®ãã¼ã¸ãã¤ãã³ããçæãã責任ãè² ãã¾ãã
const evtSource = new EventSource("sse.php");
const eventList = document.querySelector("ul");
evtSource.onmessage = (e) => {
const newElement = document.createElement("li");
newElement.textContent = `message: ${e.data}`;
eventList.appendChild(newElement);
};
åä¿¡ãããããããã®ã¤ãã³ãã¯ã EventSource
ãªãã¸ã§ã¯ãã® onmessage
ã¤ãã³ããã³ãã©ã¼ãå®è¡ããã¾ããããã§ã¯ãæ°ãã <li>
è¦ç´ ãçæãã¦ãã®ä¸ã«ã¡ãã»ã¼ã¸ã®ãã¼ã¿ãæ¸ãè¾¼ã¿ããã®è¦ç´ ãææ¸ã®ä¸ã«ããæ¢åã®ãªã¹ãè¦ç´ ã«è¿½å ãã¾ãã
ã¡ã¢: ãã®ä¾ã®å ¨å®¹ã GitHub ã«ããã¾ããSimple SSE demo using PHP ãã覧ãã ããã
ååä»ãã®ã¤ãã³ããå¾ ã¡åãããã«ã¯ãéä¿¡ãããã¤ãã³ãã®ç¨®é¡ãã¨ã«ãªã¹ãã¼ãå¿ è¦ã«ãªãã¾ãã
const sse = new EventSource("/api/v1/sse");
/*
* ããã¯ä»¥ä¸ã®ãããªã¤ãã³ãã®ã¿ãå¾
ã¡åããã¾ãã
*
* event: notice
* data: useful data
* id: someid
*/
sse.addEventListener("notice", (e) => {
console.log(e.data);
});
/*
* åæ§ã«ããã㯠`event: update` ã¨ãããã£ã¼ã«ããæã¤
* ã¤ãã³ããå¾
ã¡åãã¾ãã
*/
sse.addEventListener("update", (e) => {
console.log(e.data);
});
/*
* "message" ã¨ããã¤ãã³ãã¯ç¹å¥ãªã±ã¼ã¹ã§ã
* ã¤ãã³ããã£ã¼ã«ããæããªãã¤ãã³ãããç¹å®ã®åã§ãã
* `event: message` ãæã¤ã¤ãã³ããææãã¾ããããã¯ã
* ä»ã®ã¤ãã³ãåã§ã¯çºçãã¾ããã
*/
sse.addEventListener("message", (e) => {
console.log(e.data);
});
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4