PHP的EventSource不支持自定義事件。EventSource是一種服務器推送技術,允許服務器向客戶端發送實時更新。然而,EventSource只支持以下三種事件類型:
message
:當服務器發送消息時觸發。open
:當與服務器建立連接時觸發。error
:當發生錯誤或連接關閉時觸發。如果你需要在客戶端處理自定義事件,可以在message
事件中傳遞自定義數據,并在客戶端根據這些數據執行相應的操作。例如,你可以在服務器端發送一個包含事件類型和數據的JSON對象,然后在客戶端解析這個對象并根據事件類型執行相應的操作。
這是一個簡單的示例:
服務器端(PHP):
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
// 發送自定義事件
echo "data: {\"type\": \"customEvent\", \"data\": \"Hello, World!\"}\n\n";
flush();
?>
客戶端(JavaScript):
const eventSource = new EventSource('your_server_script.php');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
switch (data.type) {
case 'customEvent':
// 處理自定義事件
console.log('Custom event received:', data.data);
break;
default:
// 處理其他事件
console.log('Unknown event received:', data);
}
};
這樣,你就可以在客戶端處理自定義事件了。請注意,這種方法仍然依賴于message
事件,但你可以在客戶端根據傳遞的數據執行不同的操作。