有没有办法,我可以在最终调用end
对象上的response
之前不断向客户端发送回复?
有一个巨大的文件,我想阅读,解析然后将分析发送回客户端。我一读线就可以继续发送回复吗?
response.send
也会调用end
,因此我无法使用它。
答案 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一起使用来做这样的事情。这是一些有用的链接。