问题
I am trying to implement the HTML5 Server-sent events inside Laravel 4, I found this repo
the script uses server.php
file to get it working. My question is how would I implement it to get it working with a Controller instead of a plain php file? So in the Javascript side it will look like this:
var source = EventSource('/notifications');
I tried this just to see if I get a response:
class NotificationsController extends BaseController {
public function index()
{
$response = Response::view('notifications.index');
$response->header('Content-Type', 'text/event-stream');
$response->header('Cache-Control', 'no-cache');
return $response;
}
}
and in the view:
<?php
echo "id: 4" . PHP_EOL;
echo "data: this is a message" . PHP_EOL;
flush();
Finally I get this error in google-chrome network panel:
caution: provisional headers are shown
回答1:
Found it, the solution was quite simple:
the JavaScript
in the main Layout:
var source = new EventSource('/notifications');
source.onmessage = function(e) {
console.log(e);
}
in the NotificationsController@index
:
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
if (true)
{
echo "data: <p> Hello There </p>\n";
}
flush();
I got back the MessageEvent !
来源:https://stackoverflow.com/questions/24472423/server-sent-events-inside-laravel