我正在尝试在Laravel 4中实现HTML5 Server发送的事件,我发现这个repo
脚本使用server.php
文件来使其正常工作。我的问题是我如何实现它以使用Controller而不是普通的php文件?所以在Javascript方面它看起来像这样:
var source = EventSource('/notifications');
我试过这只是为了看看我是否收到回复:
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;
}
}
并在视图中:
<?php
echo "id: 4" . PHP_EOL;
echo "data: this is a message" . PHP_EOL;
flush();
最后,我在google-chrome网络面板中收到此错误:
caution: provisional headers are shown
答案 0 :(得分:4)
找到它,解决方案非常简单:
主版面中的JavaScript
:
var source = new EventSource('/notifications');
source.onmessage = function(e) {
console.log(e);
}
NotificationsController@index
中的:
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
if (true)
{
echo "data: <p> Hello There </p>\n";
}
flush();
我找回了MessageEvent!