【问题标题】:hub couldn't be resolved in SignalR集线器无法在 SignalR 中解析
【发布时间】:2017-06-03 19:54:58
【问题描述】:

我正在开发一个 signalR 项目,该项目在 API 中包含一个 Web API 我添加了我的集线器类,然后我创建了一个单独的 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>

【问题讨论】:

    标签: javascript c# signalr signalr-hub


    【解决方案1】:

    当你在 api 中配置 signalr 时,你设置了你的客户端也应该监听的 url。在下面的示例中,如果我的 api 是 http://localhost:51822,那么我的客户端将监听的 url 将是

    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信号器连接

    <script type="text/javascript">
    $(function () {
    
        var hub = $.connection.myHub;
        $.connection.hub.url = 'http://localhost:51822/signalr';
    
        $.connection.hub.start();
    });
    </script>
    

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

    找到

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 不,这不是问题,代理已经包含问题出在连接的集线器中,我忘了正确打开连接,除了 global.asax $.connection.hub 中的一些更改.url = "localhost:51822/signalr" 。但是非常感谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2014-01-22
      • 2015-07-09
      • 2018-12-18
      • 2022-08-09
      相关资源
      最近更新 更多