Kontrola emailu a zaslaní notifikace
- marcelxy
- Člen | 70
Zdravím,
neumí někdo poradit jak posílat do prohlížeče nove příchozí emaily
které každou 1min kontroluje metoda spouštěná cronem ,když zjistí nový
email zapíše ho do db a pak ho potřebuji poslat do prohlížeče přes funkci
flusch() (bez dotazu prohlížeče ajaxem atd! takhle to mám vyřešeno už
nyní)
a to ještě kontroluje 20 emailových učtu postupně a příchozí emaily by
měl posílat těm přihlášeným uživatelům kterým patří ne všem
všechno.
v prohlizeci toto
var source = new EventSource("moje metoda na kontrolu emailu.php");
source.onmessage = function(event) {
document.getElementById("novyEmail").innerHTML += event.data + "<br>";
}
a do presenteru nevim jak toto implementovat aby to fungovalo?
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
echo "data: nový prichozi email";
flush();
díky za rady
Editoval marcelxy (20. 5. 2021 15:30)
- Michal Kumžák
- Člen | 106
Ahoj
Tohle je klasický případ pro websocket. Jinak to do toho prohlížeče server sám nikdy nepošle.
- dakur
- Člen | 493
A ten kód by v presenteru vypadal asi takto:
public function actionDefault(): void
{
// způsob, jakým se response sestaví
$response = new CallbackResponse(function (IRequest $request, IResponse $response) {
$response->addHeader('Content-Type', 'text/event-stream');
$response->addHeader('Cache-Control', 'no-cache');
echo 'data: nový prichozi email';
});
// odeslání response
$this->sendResponse($response);
}