Server-sent events inside Laravel

徘徊边缘 提交于 2019-12-06 10:40:25

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!