在我的设置中,用户从asp.net核心页向asp.net核心api应用程序发送请求以生成大型.xsl文件。web与数据库通信并生成文件。下载完成后如何通知用户并向用户发送下载url?我应该用哪种技术来实现呢?
发布于 2019-10-29 02:28:21
我建议你去看看信号R
阅读文档,然后你就会有一个清晰的想法。符合你的要求。
编辑
SignalR是一个简化了向应用程序添加实时web功能的库。要使用SignalR,您需要配置服务器端部分和客户端部分。每个部分都可以向对方发送“消息”。
SignalR使用集线器在客户端和服务器之间进行通信。
集线器是一个高层管道,允许客户端和服务器相互调用方法。
您可以将多个客户端连接到同一个集线器,并同时接收相同的通知。
这样,您就可以将消息“下载完成”发送到包含下载url的客户端。
示例的来源是这里。
以下是集线器的一个示例:
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
namespace SignalRChat.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("downloadComplete", user, message);
}
}
}
你的Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoints =>
{
// ...
endpoints.MapHub<ChatHub>("/chatHub");
});
}
这里是JS客户机中的一个示例,您可以通过集线器与服务器端SignalR创建che连接。在这里您可以处理传入的消息:
var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();
connection.on("downloadComplete", function (user, message) {
// do something
});
https://stackoverflow.com/questions/58605304
复制相似问题