我正在try 在.NET7.0中创建一个WebAPI端点,它将从OpenAI API获取流文本数据,并将这些数据逐个块地返回给用户.
这是我的控制器:
[HttpGet]
public async IAsyncEnumerable<string> StreamAnswer(string message)
{
// await foreach (var part in _openAiManager.StreamAnswer(message))
// {
// yield return part;
// }
yield return "test";
Thread.Sleep(3000);
yield return "test2";
Thread.Sleep(3000);
yield return "test3";
Thread.Sleep(3000);
yield return "test4";
Thread.Sleep(3000);
yield return "test5";
Thread.Sleep(3000);
}
以下是我try 在Web浏览器中接收数据的方式:
const response = await fetch('http://localhost:5159/OpenAi?message=test');
const reader = response.body.getReader();
while (true) {
const {value, done} = await reader.read();
if (done) break;
console.log('Received', value);
}
console.log('Response fully received');
由于某些原因,我总是在控制器的操作中完成所有代码的执行后,将所有数据作为一个大块来获取.取而代之的是,我希望一到达就收到大块数据.
我错过了什么吗?