好吧,我有一个signalR集线器:
public class ReportHub : Hub
{
private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ReportHub>();
public void SendMessage(string text)
{
Clients.All.sendMessage(text);
}
public static void ServerSendMessage(string text)
{
hubContext.Clients.All.sendMessage(text);
}
}
在某些视图中,我还有js中的客户端代码
report.client.sendMessage = message => {
alert('message from server: '+ message);
}
我有web api动作,像这样:
[HttpGet]
[Route("api/Report/test")]
public int GetTest()
{
ReportHub.ServerSendMessage("message");
return 42;
}
当我在一个浏览器中使用signalR-catch js代码打开视图,并在另一个浏览器窗口中请求webapi操作时,通过键入http://../api/report/test - 所有工作,并且警报出现但是当我通过邮递员或任何其他休息客户端调用webapi操作时,完全没有效果,report.client.sendMessage = message => {alert('来自服务器的消息:'+消息); } - 不工作任何人都可以帮忙吗?
ReportHub.ServerSendMessage( “消息”);
这是错误的。
在将数据推送到客户端之前,您应该返回ReportHubContext
进行连接;
[HttpGet]
[Route("api/Report/test")]
public int GetTest()
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<ReportHub>();
hubContext.ServerSendMessage("message");
return 42;
}