我正在尝试使用System.Net.Http.HttpClient编写.NET SSE客户端。一切正常,但是如果服务器通过发送TCP FIN尝试关闭连接,则客户端将对其进行确认,但不会使用自己的FIN进行响应。从现在开始,在我的.NET代码中,读取流的调用在读取0字节后立即返回。它不会抛出异常来表明连接已按我的预期关闭。
如果我重新启动Web服务器,则客户端将按照我的预期运行,并抛出异常以指示连接已关闭。在这种情况下,我看到服务器和客户端都发送FIN。
我使用客户端不正确吗?这是HttpClient中的错误吗?
var stream = await this.HttpClient.GetStreamAsync(this.Url);
while (!cancellationToken.IsCancellationRequested) {
var bytesRead = await stream.ReadAsync(buffer, 0, bufferSize, cancellationToken);
}