HTML Server-Sent 事件

Server-Sent 事件ສາມາດຮັບການແຈ້ງຂໍ້ມູນຈາກທີ່ວາງທີ່ຫຼັງ.

Server-Sent 事件 - One Way Messaging

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") {
    // ແມ່ນ! ສະໜັບສະໜູນການສົ່ງລະບຽບຂອງທີ່ມີຄວາມກະຈາຍຂອງທີ່ວາງທີ່ຫຼັງ!
    // ການຄິດຄະແນນການຂອງລະບົບ.....
}
    // ຂ້ອຍຂ້ອຍ! ບໍ່ສາມາດສະໜັບສະໜູນການສົ່ງລະບຽບຂອງທີ່ມີຄວາມກະຈາຍຂອງທີ່ວາງທີ່ຫຼັງ (EventSource)!
}

ລະບົບການຄວບຄຸມທີ່ຢູ່ທີ່ເບິ່ງ

ຈິ່ງເພື່ອດຳເນີນການທີ່ມີຫຼັງຄາວານນີ້ຢູ່ບ່ອນທີ່ທ່ານຕ້ອງສາມາດສົ່ງຂໍ້ມູນການປັບປຸງ (ອີງຕາມ 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 ເມື່ອເກີດຄວາມຜິດພາດ