来自Mochiweb的流媒体结果



我使用Erlang和Mochiweb编写了一个web服务。web服务返回大量结果,并花费一些时间来完成计算。我希望程序一找到结果就返回结果,而不是在找到所有结果时才返回结果。

编辑:

我发现我可以使用块请求来流结果,但似乎我找不到关闭连接的方法。关于如何关闭mochiweb请求有什么想法吗?

要在HTTP 1.1中传输未知大小的数据,您可以使用HTTP分块传输编码。在这种编码中,每个数据块都以十六进制的形式加上其大小。最后一个块是零长度块,块大小编码为0,但不包含任何数据。

如果客户端不支持HTTP 1.1,服务器可以发送二进制数据块,并在流结束时关闭连接。

在MochiWeb中,它的工作原理如下:

  1. HTTP响应应该以Response = Request: response ({Code, ResponseHeaders, chunked})函数开始。(顺便说一下,看看代码注释);
  2. 通过Response: write_chunk(Data)功能将chunk发送到客户端。为了指示客户端,应该发送长度为零的流块的结束:Response:write_chunk(<<>>)
  3. 当当前请求处理结束时,MochiWeb决定连接是关闭还是可以被HTTP持久连接重用。

相关内容

  • 没有找到相关文章

最新更新