如何在codeigniter中实现服务器发送事件?

时间:2015-05-29 07:06:45

标签: codeigniter server-sent-events

我想用CI做一个实时应用程序。 所以我在控制器(CI)中编写了一些代码

这是我的代码:

  $this->output->set_content_type('text/event-stream');
  $this->output->set_header('Cache-Control: no-cache');
  $time = date('r');
  $output="data: The server time is: {$time}\n\n";
  flush();

但是,我收到了这个错误:

  

EventSource的响应的MIME类型(" text / html")不是   "文本/事件流&#34 ;.中止连接。

想法?

3 个答案:

答案 0 :(得分:2)

您必须设置内容类型:

$this->output->set_content_type('text/plain', 'UTF-8');
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate')

请阅读manual

答案 1 :(得分:1)

对于Codeigniter 3,您必须更改:

{{1}}

参见示例

答案 2 :(得分:0)

来自codeigniter docs的

https://ellislab.com/codeigniter/user-guide/libraries/output.html

<强> $这 - &GT;输出 - &GT; set_content_type();

允许您设置页面的mime类型,以便您可以轻松地提供JSON数据,JPEG,XML等。

$this->output->set_content_type('application/json')->set_output(json_encode(array('foo' => 'bar')));

$this->output->set_content_type('jpeg') // You could also use ".jpeg" which will have the full stop removed before looking in config/mimes.php
    ->set_output(file_get_contents('files/something.jpg'));

重要说明:确保传递给此方法的任何非mime字符串都存在于config / mimes.php中,否则它将无效。

第二个选项

转到application/config/mimes.php 添加'txt' => 'text/event-stream',$mimes数组。

修改 将您的代码更改为:

    $time = date('r');
    $output="data: The server time is: {$time}\n\n";
    $this->output->set_content_type('text/event-stream')->set_output($output);
    $this->output->set_header('Cache-Control: no-cache');
    flush();