我正在尝试在用户将数据发送到端点后触发服务器发送事件更新。我的目标是从端点内调用sendMsg函数。这两个功能位于单独的文件中。
如果在同一个文件中调用sendMsg函数,并且将前端eventSource设置为sendMsg函数的文件,则该函数起作用。
include 'sseFile.php';
/**
* Comment creation end point
*/
function createComment(){
$submittedComment = $_POST["comment"];
$comment = new comment();
$comment->setComment($submittedComment);
$comment->create();
sendMsg(); //the SSE fucntion in the other file.
}
//EOF
//File holding the SSE
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
/**
* Server side code for SSE.
* This returns the most recent comment to the front end.
*/
function sendMsg(){
$comment = new comment();
$comment->getLatestComment();
echo "data: {\"msg\": \"".addcslashes($comment->getComment()."}\n\n";
ob_flush();
flush();
}
目标是仅在用户将数据发送到终点时才触发SSE。在提供的示例中,没有数据从SSE发送到客户端。如果我将对sendMsg()的调用移到与该函数相同的文件中,那么即使没有任何新更改,更新也会不断发送到客户端。