javascript - 每个事件具有多个事件处理程序的 SignalR

标签 javascript signalr

在 C# 中,我会像这样将许多处理程序挂接到一个事件:

event += firstEventHandler;
event += secondEventHandler;

但我们编写的带有 SignalR 的 JavaScript:

$.connection.someHubName.client.someEventName = function (item) {
    console.log("someMessage", item);
};

我创建了一个看起来有点像这样的包装器:

var signalRClient = {
    start: function (callback) {
        $.connection.hub.url = ajaxHttp + "/signalr";
        $.connection.hub.logging = true;
        if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.disconnected) {
            $.connection.hub.start({ jsonp: true, withCredentials: true, transport: ['webSockets', 'longPolling'] }).done(callback);
        } else {
            callback();
        }
    },
    connection: $.connection
}

我可以这样调用:

signalRClient.connection.somehub.client.someEvent = function (item) {
    console.log("someMessage", item);
};

signalRClient.start(function () { 
    signalRClient.connection.somehub.server.subscribe(someId);
});

但是如果我在多个 View (在同一个渲染页面上)中运行 signalRClient,它只能将一个函数分配给一个事件。我希望能够为一个事件分配多个功能。

我读过: connect to signalr hubSignalR client with multiple connections++

但我认为为此目的创建多个到同一个集线器的连接不是一个好主意。我也会尽量避免在布局中创建我的 SignalR 代码,并使所有 View 都依赖于此。

是否有可用的简单解决方案,以便我可以将许多事件处理程序挂接到 $.connection.somehub.client.event

最佳答案

在尝试了许多不同的事情之后,我设法正确地使用了 .on( 命令。它是这样完成的:

signalRClient.connection.somehub.on("someevent", function(item) {
    console.log(item);
});

signalRClient.connection.somehub.on("someevent", function (item) {
    console.log(item);
});

这将为每个事件在控制台中提供两行。

关于javascript - 每个事件具有多个事件处理程序的 SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36445583/

相关文章:

javascript - 使用闭包存储和检索数据

javascript - 当呈现的操作链接作为查询字符串返回时,如何解决 MVC3 的路由问题?

javascript - 在循环中调用函数, "Undefined is not a function"

javascript - 我如何在 jquery AJAX 函数中按顺序执行事件

javascript - 为什么 jquery 日期选择器不显示日期?

javascript - 需要显示 Toastr 通知 jquery 插件

asp.net-mvc - Asp.Net MVC 信号 R 聊天消息保存在文档数据库或 Azure 表中

c# - SignalR 中的组加入方法抛出异常

javascript - 反序列化可能的子项,它们可能具有需要反序列化的属性

c# - 如何实现网页的实时数据