[英]Asp.Net Web Api2 + SignalR
請幫幫我!
我有一些郵件項目。 我需要使用 SignalR。 現在我的 Startup 中只有這個
app.MapSignalR();
我有集線器
[HubName("MailHub")]
public class MailHub<THub>: Hub
where THub : IHub
{
public void SendMessage (Mail message)
{
Clients.Caller.addMessage(message);
}
}
我有郵件控制器
[Authorize]
[RoutePrefix("api/mail")]
public class MailController : ApiController
{
private readonly MailStore<Mail> _mail;
public MailController()
{
_mail = new MailStore<Mail>(MongoUtil<Mail>.GetDefaultConnectionString());
}
[HttpPost]
[Route("send")]
public async Task<IHttpActionResult> SendMessage(Mail message)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<MailHub<IHub>>();
if (hubContext != null)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
var currentUser = User.Identity.Name;
var sendMessage = new Mail
{
Subject = message.Subject,
Sender = message.Sender,
Receiver = message.Receiver,
Message = message.Message
};
await _mail.CreateAsync(sendMessage);
// hubContext.Clients.Clien....;
/* if (!result.Succeeded)
{
return BadRequest(ModelState);
}
*/
return Ok();
}
return BadRequest();
}
}
以及如何在此控制器上使用 SignalR? 我需要某個用戶使用 SignalR 向另一個用戶發送電子郵件。
查看您的代碼,您可以像在控制器中一樣發送電子郵件。
[HubName("MailHub")]
public class MailHub<THub>: Hub
where THub : IHub
{
public void SendMessage (Mail message)
{
var sendMessage = new Mail
{
Subject = message.Subject,
Sender = message.Sender,
Receiver = message.Receiver,
Message = message.Message
};
await _mail.CreateAsync(sendMessage);
}
}
或更簡單地說:
[HubName("MailHub")]
public class MailHub<THub>: Hub
where THub : IHub
{
public void SendMessage (Mail message)
{
await _mail.CreateAsync(message);
}
}
SignalR 沒有內在要求將響應發送回 SignalR 客戶端(除非您願意),只需像在控制器中一樣接收參數並發送郵件即可。
嗨,我將方法更改為靜態,然后我可以使用 classname.methodname 調用 MVC 控制器。 我想你也可以這樣做。請試着告訴我。
[HubName("MailHub")]
public class MailHub<THub>: Hub
where THub : IHub
{
// change to static
public static void SendMessage (Mail message)
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MailHub>();
context.Clients.All.addMessage(message);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.