无法在SignalR中解析集线器

时间:2017-06-03 19:54:58

标签: javascript c# signalr signalr-hub

我正在研究一个signalR项目,该项目在API中包含一个Web API我添加了我的hub类,然后我创建了一个单独的javascript客户端来处理它 客户,通过这个我得到了错误说 examhub'Hub无法解决。,我不知道为什么可以提供任何帮助。

我的中心代码:

public class ExamHub : Hub
{
    public void Send(string name , string message)
    {
        Clients.All.broadcast(name, message);
    }
}

Javascript客户端:

 <html>
<head>
    <meta name="viewport" content="width=device-width" />
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"
            integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
            crossorigin="anonymous"></script>
    <script src="~/Scripts/jquery.signalR-2.2.2.js"></script>
    <script src="http://localhost:51822/signalr/hubs"></script>
    <title>SignalR</title>
</head>
<body>
    <div> 
    </div>
    <script type="text/javascript">
        $(function () {
            var exam = $.connection.examHub;

            exam.client.broadcast = function (name, message) {
                alert(name + "" + message);
            }
            $.connection.hub.start().done(function () {
                exam.server.send("Alameer", "Hi");
            });
        });
    </script>

</body>

</html>

2 个答案:

答案 0 :(得分:1)

在api中配置signalr时,您需要设置客户端应该监听的URL。在下面的示例中,如果我的api是http://localhost:51822,那么我的客户端将会收听的网址将是

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        // Any connection or hub wire up and configuration should go here
        app.MapSignalR("/signalr", new HubConfiguration());
    }

}

}

然后在客户端项目中将配置它的javascript signalr连接,如此

<script type="text/javascript">
$(function () {

    var hub = $.connection.myHub;
    $.connection.hub.url = 'http://localhost:51822/signalr';

    $.connection.hub.start();
});
</script>

请记住,您可能需要在开发环境中允许CORS。我不建议您设置项目,以便在生产中允许使用CORS,除非这是您的要求之一。代码中不包括您需要设置的Hub。可以找到该信息here

答案 1 :(得分:0)

您可能忘记包含生成的代理signalr/hubs。尝试将此行添加到您的javascript代码中:

<script src="signalr/hubs"></script>