Web Api控制器中的SignalR方法未在特定设置中调用

问题描述 投票:1回答:1

好吧,我有一个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('来自服务器的消息:'+消息); } - 不工作任何人都可以帮忙吗?

javascript asp.net-web-api signalr
1个回答
0
投票

ReportHub.ServerSendMessage( “消息”);

这是错误的。

在将数据推送到客户端之前,您应该返回ReportHubContext进行连接;

[HttpGet]
[Route("api/Report/test")]
public int GetTest()
{
    var hubContext = GlobalHost.ConnectionManager.GetHubContext<ReportHub>();
    hubContext.ServerSendMessage("message");
    return 42;
}
© www.soinside.com 2019 - 2024. All rights reserved.