我想用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 ;.中止连接。
想法?
答案 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)
: 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();