无法从javascript客户端连接signalR集线器

fail to connect signalR hub from javascript client

本文关键字:连接 signalR 集线器 客户端 javascript      更新时间:2023-09-26

我正试图从javascript客户端连接到另一个域中的信号器集线器。

我在页面上的参考资料

`<script src="script/jquery-1.10.2.min.js"></script>
 <script src="script/jquery.mobile-1.4.3.min.js"></script>
 <script src="Scripts/jquery.signalR-2.1.2.min.js"></script>
 <script src="http://domain/SignalR/Hubs"></script>
<script type="text/javascript">
    $(function () {
        var myHub = $.connection.newHub;
        // Start the connection
        $.connection.hub.start();
        // Declare a function on the blog hub so the server can invoke it
        myHub.client.BroadcastMessage= function ( message) {
            alert(message);
        };
        myHub.server.SentInfo(" message");
}    

但是客户端无法连接到集线器。

$.connection.hub.start();

如果我尝试调用myHub.server.SentInfo(" message");,则失败并在控制台中它给出错误作为

Error: SignalR: Connection must be started before data can be sent. Call .start() before .send()

我错过了什么。

提前感谢

在您的JavaScript中,在命名Hub变量(var myHub = $.connection.newHub;)之前,您需要有$.connection.hub.url = 'yourURL';。根据Startup.cs文件和CORS的配置方式,您可能需要稍微处理一下URL。

signalR连接不会立即打开。您需要等待开放连接承诺实现。尝试以下代码

    $.connection.hub.start().done(function () {
        // Declare a function on the blog hub so the server can invoke it
        myHub.client.BroadcastMessage= function ( message) {
           alert(message);
        };
        myHub.server.SentInfo(" message");
    });