Laravel内部的服务器发送事件

时间:2014-06-29 01:30:59

标签: laravel-4 server-sent-events

我正在尝试在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

1 个答案:

答案 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!