SignalR JS客户端的方法不会被调用(SignalR JS Client Methods No

2019-07-17 16:20发布

我遇到了麻烦SignalR服务器端集线器代码来调用JS客户端的方法。 相反的是工作的罚款 - 所以当我的客户端发送消息到服务器按预期交付。 我一直很小心,以避免明显的陷阱,但我想我还是忽视的东西。 这里是我的代码:

从MessageHub.cs:

public bool SendMessage( ClientMessage message )
{
    ...
    Clients.All.addMessage("my message");
    ...
}

使用Javascript:

$.connection.hub.start()
    .done(function () {
        messageHub = $.connection.message;

        // addMessage is never invoked.
        messageHub.client.addMessage = function (message) {
            alert('message added');
        };

        /* // I tried this based on some sample code but still not invoked.
        messageHub.addMessage = function (message) {
            alert('message added');
        };
        */

        // This works as expected.
        messageHub.server.registerUser(userId);
        ...
    });

正如上面提到的,我无法找到设置任何明显的不足之处,但这里有几个可能相关的要点:

  • 建立连接和调用服务器端方法。
  • 这也许无关紧要,但我已经试过迫使不同的传输与行为没有任何变化。
  • 客户端的方法名称不以任一点的服务器的方法名称冲突。
  • 我也试着将消息发送到特定的客户端连接(这实际上是我们的目标,在这种情况下)。
  • 我在登录客户端和服务器上启用,但没有看到在任何情况下任何相关信息。

因此,鉴于上述情况,我失去了一些东西明显? 如果没有,什么是确定故障点的最好办法?

PS这是不具体涉及到的问题,但是,由于某种原因,提琴手不再捕获从我的任何浏览器的任何流量,这使得调试WS或HTTP流量有点挑战 - 我猜这是一个Windows 8的事情。 ..

Answer 1:

所以,答案其实很简单(虽然自上次发布我从1.0.0.0-RC1升级到1.0.0.0 - 但我相当肯定,没有signficantly改变这种情况)。

我找到了答案在这里: https://stackoverflow.com/a/15074002/32935 (注意,特别是,我的解决办法是提供的第一个答案-尽管第二帮我找出原因)。

从本质上讲,对于那些谁不想去到原来的答案,我调用之前必须设置我的客户的方法start()对连接方法在反对done()回调,因为我在做什么。 下面是一个例子:

$.connection.message.client.addMessage = function (message) {
    alert( 'Now it works!' );
};

$.connection.hub.start()
    .done(function () {
        console.log( 'Connection established!' );
    });


Answer 2:

当你将鼠标悬停在客户对象,你看到你在JS中定义的所有功能?

无论如何,我不知道为什么你的方式不起作用,但是这是我怎么写我的客户端,和它的作品。 也许你可以试试这个方法。

$(function () {

    var hub = $.connection.RatesHub;


    $.connection.hub.start().done(function () {
        /*Logic goes here*/
    });

    $.extend(hub.client, {
        FuncName: function (msg) {
            /*Logic goes here*/
        }
    });

}

你想在你的服务器被识别的任何功能,使用$ .extend。

希望帮助。



文章来源: SignalR JS Client Methods Not Invoked
标签: signalr-hub