我对comet - esque请求有点新意,所以如果我为自己做了太多工作并且应该使用库或其他方法,请说出来。
基本上这是我的情况:我有一个页面将<iframe>
元素的src
属性设置为php脚本。 PHP脚本使用以下标头流式传输响应:
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: multipart/x-mixed-replace
这在safari中很有名!但是,firefox会在几秒钟后关闭连接。我该如何解决?我已经检查了两个浏览器的脚本响应,否则响应是相同的(直到Firefox关闭连接。)
令人敬畏的更新:Firefox讨厌“Content-Type:multipart / x-mixed-replace”。一旦删除它就可以在Firefox中使用。
有没有更好的方法来做这种事情?
答案 0 :(得分:0)
此处的解决方案是将Content-Type: multipart/x-mixed-replace
发送到Safari,但不发送给Firefox。
由于我不完全理解的原因,如果响应中存在此标头,Firefox将在几秒钟后断开与服务器的连接。 Firefox会处理流媒体响应,否则就行了。
为了实现这一点,我只是在代码中添加了对用户代理的检查:
if( preg_match("/Safari/", $_SERVER["HTTP_USER_AGENT"]) )
header("Content-Type: multipart/x-mixed-replace");