HTML Server-Sent Event

Server-Sent 事件ສະໜັບສະໜູນການເອົາການປັບປຸງຈາກເຊີ່ງ.

Server-Sent 事件 - Messaging One Way

Server-Sent 事件ແມ່ນການເອົາການປັບປຸງຈາກເຊີ່ງອັນຕະລາຍ.

ກ່ອນນີ້ກໍ່ສາມາດເຮັດໄດ້ນີ້, ສະນັ້ນເວັບໄຊຕ້ອງຖາມວ່າມີການປັບປຸງທີ່ຈະມີ. ພາຍໃນ Server-Sent 事件, ການປັບປຸງຈະມາຫາໄດ້ອັນຕະລາຍ.

ຕົວຢ່າງ: Facebook/Twitter ການປັບປຸງ, ການປັບປຸງລາຄາຫຸ້ນ, ການປັບປຸງບົດຄວາມໃໝ່, ຜົນການແຂ່ງຂັນ, ແລະອີກຫຼາຍແຫ່ງອື່ນໆ

ການສະໜັບສະໜູນຂອງບັນດາບັນດາຄົນຂາຍ

ຈຳນວນທີ່ຢູ່ໃນຕາລາງສະແດງວ່າບັນດາການຄົ້ນຫາທີ່ສະໜັບສະໜູນ server-sent 事件ຄັ້ງທຳອິດ

API
SSE 6.0 ບໍ່ສະໜັບສະໜູນ 6.0 5.0 11.5

ຮັບການເຫດການຂອງ Server-Sent 事件

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 ຂອງ "result"

ກວດສອບການສະໜັບສະໜູນ Server-Sent 事件

ໃນການພິສູດ TIY, ພວກເຮົາໄດ້ຂຽນລະບົບການທີ່ຫຼາກຫຼາຍເພື່ອກວດສອບການສະໜັບສະໜູນຂອງການເຫດການຂອງເຊີ່ງທີ່ສົ່ງມາຈາກເຊີ່ງ:

if(typeof(EventSource) !== "undefined") {
    // ບໍ່! ສະໜັບສະໜູນການເຫດການຂອງເຊີ່ງທີ່ສົ່ງມາຈາກເຊີ່ງ!
    // ລະບົບການທີ່ຫາກວ່ານີ້.....
} else {
    // ຂ້ອຍຂ້ອຍ! ບໍ່ສາມາດສະໜັບສະໜູນການສົ່ງລະບຽບການເຫດການຂອງເຊີ່ງທີ່ສົ່ງມາຈາກເຊີ່ງ!
}

ລະບົບການທີ່ຢູ່ທີ່ເຊີ່ງ

ຈິ່ງເພື່ອດຳເນີນການທີ່ຫາກວ່ານີ້ຈະຕ້ອງມີບັນຊີທີ່ສາມາດສົ່ງບັນນາທິດຂອງການປັບປຸງ (ອີງຕາມ PHP ຫຼື ASP)。

ວິທະຍານຂອງສາຍນິວນິຊີບາງຢ່າງລະອຽດ. ກະຕຸ້ມ "Content-Type" ສະໜອງ "text/event-stream". ດຽວນີ້ທ່ານສາມາດສົ່ງສາຍນິວນິຊີໄປແລ້ວ.

ວິທະຍານ PHP (demo_sse.php):

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>

ວິທະຍານ ASP (VB) (demo_sse.asp):

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

ການອະທິບາຍວິທະຍາ

  • ການປັບສັບ "Content-Type" ຕັ້ງເປັນ "text/event-stream"
  • ບໍ່ປະຕິບັດການຄັດຄ້ານຂອງບົດຄວາມ
  • ສົ່ງຂໍ້ມູນທີ່ຈະສົ່ງອອກ (ຕົວເລກວ່າ "data: ")
  • ສົ່ງຂໍ້ມູນອອກໄປຫາບົດຄວາມຂອງເວັບໄຊ

ວັດຖຸ EventSource

ໃນຕົວຢ່າງທີ່ພວກເຮົາໃຊ້ການເກີດຂອງ onmessage ເພື່ອຮັບຕຳນານ. ແຕ່ຍັງສາມາດໃຊ້ການເກີດອື່ນໆ:

ການເກີດຂອງສະພາບ ການອະທິບາຍ
onopen ເມື່ອການເຊື່ອມຕໍ່ທາງເວັບໄຊຖືກເປີດ
onmessage ເມື່ອຮັບຕຳນານ
onerror ເມື່ອເກີດຄວາມຜິດພາດ