我仍在了解 SignalR 的基础知识。我想在我网站的不同部分使用它,所以我想我可以在主布局中启动连接,并在 subview 中添加客户端方法。
根据 this answer我有:
window.hub = $.connection.hub.start();
在我的 Layout.cshtml 和
window.hub.done(function () {
$.connection.notificationHub.server.joinScannerGroup(1);
alert("in sub view");
});
在我的 subview 中,它有效。集线器已连接,方法 JoinScannerGroup()
被调用。但是,如果我尝试添加:
$.connection.notificationHub.client.scanReceived = function (text) {
alert("scan received");
};
在 subview 的 javascript 中的任何地方,它永远不会被调用。也许我理解错了,但我想在主页上连接,然后允许任何子页面接收客户端调用。
此外,如果我将 $.connection.start()
移动到 subview 中,它也能正常工作。我理解错了吗?
最佳答案
您需要在调用 hub.start()
之前添加所有客户端中心方法,或者您需要在调用 hub.start()
之前至少添加一个集线器方法(因此 SignalR 将订阅集线器)然后像这样添加所有其他集线器方法:
$.connection.notificationHub.on('scanReceived ', function (text) {
alert("scan received");
});
(另见 documentation)
关于c# - PartialView 中的 SignalR 客户端未接收到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21165075/