2017-10-09 14 views
0

我不確定如何最好地解釋此問題。未在服務器上所需的PHP文件中設置EventSource「event」參數

我有一些自定義事件處理像這樣一個Javascript的EventSource對象:

var source = new EventSource('updates.php'); 
source.addEventListener('add', addHandler, false); 
source.addEventListener('remove', removeHandler, false); 

在updates.php,我可以定義使用「事件:」自定義事件參數的更新流,如下所示,觸發相應的處理程序。

echo "event: add" . PHP_EOL; 
echo "data: " . $message . PHP_EOL; 

這工作在updates.php精細

updates.php通過require_once包括updates2.php。這也適用於updates2.php,並在我的Javascript中調用正確的處理程序。

updates2.php通過require_once包含updates3.php。這不適用於updates3.php - 所有事件默認爲「消息」類型,不會觸發自定義處理程序。

+0

是否將內容類型設置爲文本/事件流,標題('Content-Type:text/event-stream'); ? –

+1

你可以在問題中包含所有'php'文件嗎?在服務器或'EventSource'錯誤'處理程序中是否記錄了任何錯誤? – guest271314

+0

@ GaneshK我已經設置了內容類型,它在任何地方都能正常工作,但其中包含php文件。 onerror處理程序中沒有錯誤 - 它將它作爲默認消息而不是自定義類型事件記錄到onmessage – Monbrey

回答

0

我最終使用了在其他幾個地方定義的解決方法。

我不是試圖自定義事件:參數,而是使用JSON對象作爲data:參數,並且可以在其中添加任何我喜歡的自定義字段。

相關問題