asp.net-mvc-5 – WebJob和SignalR Hub之间的通信
发布时间:2020-05-24 09:41:32 所属栏目:asp.Net 来源:互联网
导读:我有以下情况: 我有一个天蓝色的webjob(用于发送邮件),我需要在我的Web应用程序中检查webjob的进度. 我正在使用SignalR与我的服务器上的客户端进行通信. 当我想发送电子邮件时,我在队列中按下一条消息,然后天蓝色的webjob就完成了他的工作. 问题是,我如何将w
|
我有以下情况: >我有一个天蓝色的webjob(用于发送邮件),我需要在我的Web应用程序中检查webjob的进度. 问题是,我如何将webjob的进度传达给客户?最初我的想法是从webjob推送消息,因此Hub可以从队列中读取它.然后,我会通过集线器通知客户.但是,我无法找到传达webjob和集线器的方法,当消息被推入队列或服务总线时,我不知道如何在集线器中触发操作.也就是说,我不知道如何将集线器订阅到队列的某个消息. 有人可以帮我吗? 解决方法我这样做的方法是将webjob设置为SignalR客户端,通过SignalR将消息从webjob推送到服务器,然后将这些消息中继到SignalR Web客户端.首先在webjob上安装SignalR Web客户端(nuget包ID为Microsoft.AspNet.SignalR.Client). 然后在您的webjob中,初始化您的SignalR连接集线器并向服务器发送消息,例如: public class Functions
{
HubConnection _hub = new HubConnection("http://your.signalr.server");
var _proxy = hub.CreateHubProxy("EmailHub");
public async Task ProcessQueueMessageAsync([QueueTrigger("queue")] EmailDto message)
{
if (_hub.State == ConnectionState.Disconnected)
{
await _hub.Start();
}
...
await _proxy.Invoke("SendEmailProgress",message.Id,"complete");
}
}
您的SignalR服务器将接收这些消息,然后可以将它们转发给其他SignalR客户端,例如: public class EmailHub : Hub
{
public void SendEmailProgress(int messageId,string status)
{
Clients.All.broadcastEmailStatus(messageId,status);
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 我需要什么样的路线才能提供虚荣网址?
- asp.net – 为什么在FireFox中禁用时链接按钮不会变灰?
- ASP.NET MVC Url路由支持(点)
- Asp.net System.Web.HttpContext.Current.Session null in
- asp.net-identity – 为什么一个站点的ASP.NET身份登录可以
- asp.net mvc多个连接字符串
- asp.net – 禁用web.config继承?
- asp.net – 基于web.config的url重写的绝对最小内容是什么?
- asp.net – 在启用了共享配置的IIS 7上安装Web Deploy
- 如何排序. .NET中的resx(资源文件)
