SignalR必须在逻辑之前调用.done或.fail

Aar*_*tes 3 javascript c# signalr

我正在尝试使用SignalR创建一个简单的hello世界.我有一个中心,

public class MyHub : Hub
{
    public void TestConnection(string message)
    {
        Clients.Caller.testConnection(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个JS文件(使用Angular),

var hub = $.connection.myHub;
hub.client.testMessage = function (message) {
    console.log("Test: " + message);
};
$.connection.hub.start().done(function () { 
    alert('signalR started');  
}).fail(function (reason) {
    console.log("SignalR connection failed: " + reason);
});
hub.server.testConnection("hello signalR").done(function () { });
Run Code Online (Sandbox Code Playgroud)

当我加载页面时,我只想让控制台说"hello signalR".我收到一条错误消息:SignalR:Connection尚未完全初始化.使用.start().done()或.start().fail()在连接启动后运行逻辑.

我究竟做错了什么?

Ndy*_*Ndy 5

试试这个:

$.connection.hub.start().done(function () { 
    alert('signalR started');  
    hub.server.testConnection("hello signalR").done(function () { });
});
Run Code Online (Sandbox Code Playgroud)

并在服务器上:

Clients.All.testConnection(message);
Run Code Online (Sandbox Code Playgroud)

连接启动后,必须调用hub.server中的函数.在您的示例中,正在运行javascript,但集线器连接尚未完成,因此您将其放入.done()的回调中