【问题标题】:How to configure apache to work with SSE?如何配置 apache 以使用 SSE?
【发布时间】:2017-04-29 16:03:21
【问题描述】:

我有实现 SSE(服务器发送事件)的 FastCGI 应用程序。

本地测试服务器是lighttpd,为了让它正常工作,我需要在配置文件中设置:server.stream-response-body = 1

但是在生产上有一个Apache服务器,它不能正常工作,就像上面设置之前的lighttpd一样。

效果是前端连接了,但是服务器不响应,直到收集到一些大数据。显然,Web 服务器中有一些缓冲忽略了 text/event-stream 标头。

脚本发送唯一的标头:

Content-Type: text/event-stream

那么,如何配置 apache 立即发送流而不是缓冲呢?

是 .htaccess 文件中的内容还是我应该发送一些特殊的标头?

【问题讨论】:

    标签: apache .htaccess server-sent-events


    【解决方案1】:

    在收集到大量数据之前,服务器不会响应

    是的,这是每个人在使用 SSE 和 PHP 时都会遇到的奇怪行为之一。

    您需要添加虚拟数据以便 PHP 刷新工作。

    我使用这个函数来添加需要的数据以达到flush的数据长度:

    function sse_out($string)
    {
        // start buffer if not already
        if (ob_get_level() == 0)
        {
            ob_start();
        }
        
        echo "data: ".$string."\n\n";
    
        if (strlen($string) < 4096)
        {
            echo str_pad(' ', 4096)."\n";
        }
        
        ob_flush();
        flush();
    }
    

    调用sse_out('Hello there.');发送任何数据

    【讨论】:

      猜你喜欢
      • 2017-10-01
      • 2020-10-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多