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

时间:2014-09-28 18:44:38

标签: javascript jquery-mobile signalr

我正在尝试连接到来自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()

我缺少什么。

提前致谢

2 个答案:

答案 0 :(得分:0)

在您的JavaScript中,在命名Hub变量($.connection.hub.url = 'yourURL';)之前,您需要var myHub = $.connection.newHub;。您可能需要稍微使用URL,具体取决于您如何配置Startup.cs文件和CORS。

答案 1 :(得分:0)

信号R连接无法立即打开。您需要等到完成开放连接承诺。请尝试以下代码

    $.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");
    });