如何从 .NET Core Rest API 发出一个流以在 Angular 中消耗为可观察的?
How to emit a stream from .NET Core Rest API to consume in Angular as observable?
我想设置一个持续从后端接收值的页面,以便呈现的数据集随着时间的推移而增长,直到后端说完成(甚至可能永远不会发生)。类似于 this article,但后端基于 .NET Core。
因此,Angular 服务起初看起来像这样。
@Injectable()
export class TheService {
constructor(private httpClient: HttpClient) {}
getStuff(): Observable<Thing[]> {
return this.httpClient.get<Thing[]>('http://localhost:3000/stuff');
}
getThing(): Observable<Thing> {
return this.httpClient.get<Thing>('http://localhost:3000/thing');
}
}
我遇到的问题是在后端。当我 return 一组东西时,我最后提供 Ok()
指定操作已成功完成,状态代码 200。现在,我想要实现的是 return一次一件事情(或一系列事情,只要它不是要提供的所有事情的最终集合)。基本上,我想在不完成连接的情况下从 .NET API 发出值。为简单起见,我们甚至可以使用 String
类型的响应而不是 Thing
.
是否可以在 .NET 中使用“通常”?我在想默认的 GET 方法是这样的。
[HttpGet("stuff")]
public ActionResult<IEnumerable<Thing>> GetThing()
{
IEnumerable<Thing> output = ...;
return Ok(output);
}
[HttpGet("thing")]
public ActionResult<Thing> GetThing()
{
Thing output = ...;
return Ok(output);
}
我用谷歌搜索了此事,但没有发现任何相关内容。有很多资源处理 Angular 端和可观察对象、RxJs 等。连接 .NET 和 Angular 的所有示例都呈现服务和完成类型的连接。我找到的最好的链接在顶部,并且在后面不使用 .NET。不知何故,我怀疑它非常简单或几乎不可行。
如果您需要客户端和服务器之间的长期连接,您可以考虑使用 WebSockets through something like Pusher, which has a .NET lib available: https://github.com/pusher/pusher-http-dotnet
您也可以使用长轮询,但效率要低得多,因为您会间歇性地查询服务器以获取更新。您基本上会设置一个 Interval observable 以每 N 秒发出一次请求以检查服务器上的更新。
我想设置一个持续从后端接收值的页面,以便呈现的数据集随着时间的推移而增长,直到后端说完成(甚至可能永远不会发生)。类似于 this article,但后端基于 .NET Core。
因此,Angular 服务起初看起来像这样。
@Injectable()
export class TheService {
constructor(private httpClient: HttpClient) {}
getStuff(): Observable<Thing[]> {
return this.httpClient.get<Thing[]>('http://localhost:3000/stuff');
}
getThing(): Observable<Thing> {
return this.httpClient.get<Thing>('http://localhost:3000/thing');
}
}
我遇到的问题是在后端。当我 return 一组东西时,我最后提供 Ok()
指定操作已成功完成,状态代码 200。现在,我想要实现的是 return一次一件事情(或一系列事情,只要它不是要提供的所有事情的最终集合)。基本上,我想在不完成连接的情况下从 .NET API 发出值。为简单起见,我们甚至可以使用 String
类型的响应而不是 Thing
.
是否可以在 .NET 中使用“通常”?我在想默认的 GET 方法是这样的。
[HttpGet("stuff")]
public ActionResult<IEnumerable<Thing>> GetThing()
{
IEnumerable<Thing> output = ...;
return Ok(output);
}
[HttpGet("thing")]
public ActionResult<Thing> GetThing()
{
Thing output = ...;
return Ok(output);
}
我用谷歌搜索了此事,但没有发现任何相关内容。有很多资源处理 Angular 端和可观察对象、RxJs 等。连接 .NET 和 Angular 的所有示例都呈现服务和完成类型的连接。我找到的最好的链接在顶部,并且在后面不使用 .NET。不知何故,我怀疑它非常简单或几乎不可行。
如果您需要客户端和服务器之间的长期连接,您可以考虑使用 WebSockets through something like Pusher, which has a .NET lib available: https://github.com/pusher/pusher-http-dotnet
您也可以使用长轮询,但效率要低得多,因为您会间歇性地查询服务器以获取更新。您基本上会设置一个 Interval observable 以每 N 秒发出一次请求以检查服务器上的更新。