不断向客户发送回复

时间:2017-03-20 15:13:38

标签: node.js http express

有没有办法,我可以在最终调用end对象上的response之前不断向客户端发送回复?

有一个巨大的文件,我想阅读,解析然后将分析发送回客户端。我一读线就可以继续发送回复吗?

response.send也会调用end,因此我无法使用它。

2 个答案:

答案 0 :(得分:2)

您想使用res.write,它会在不终止响应的情况下发送响应正文内容:

  

这会发送响应主体的一大块。可以多次调用此方法以提供身体的连续部分。

请注意,write中未包含http.ServerResponse,因为它不是特定于Express的功能,而是继承自Node的核心res,即Express {#1}} ; s响应对象来自:

  

... PROCEDURE [ts].[uspAddClientForm]( @ClientId int, @SystemFormId bigint, @Year int, @Name nvarchar(255), @CreatedBy nvarchar(2000), @CreateDate datetime = NULL, @Active bit = 1, @ClientFormId bigint OUTPUT ) AS BEGIN SET NOCOUNT ON INSERT INTO [ts].[ClientForm] ([ClientId], [SystemFormId], [Year] ,[Name] ,[CreatedBy] ,[CreateDate], [Active]) VALUES(@ClientId, @SystemFormId, @Year, @Name, @CreatedBy, GETDATE(), @Active) SET @ClientFormId = SCOPE_IDENTITY() END 对象是Node自己的响应对象的增强版本,支持所有内置字段和方法。

但是,使用流数据总是有点棘手(请参阅下面的注释警告有关意外超时),因此可能更容易重组您的应用程序以通过Express documentation或{{3}发送流数据与不支持WebSockets的浏览器兼容。

答案 1 :(得分:1)

您正在使用哪种服务器端应用程序?您可以将Node.js与Socket.IO一起使用来做这样的事情。这是一些有用的链接。

First Node.js application

Node.js readline API