gpt4 book ai didi

SignalR - 无法加载集线器方法

转载 作者:行者123 更新时间:2023-12-02 16:39:37 24 4
gpt4 key购买 nike

我有兴趣使用 SignalR 为我的应用程序中的一些长时间运行的进程提供更好的用户体验,并且刚刚创建了我的第一个测试 SignalR 项目。我创建了一个空的 Web 项目,然后使用 NuGet 安装 SignalR.Sample 包。 StockTicker.html 页面示例运行良好。然后我创建了自己的中心和测试页面。

using System.Threading;
using Microsoft.AspNet.SignalR.Hubs;

namespace SignalR.Test
{
[HubName("testHub")]
public class TestHub : Hub
{
public void LongRunningProcess()
{
Thread.Sleep(1000);
this.Clients.Caller.updateStatus("25% Completed");
Thread.Sleep(1000);
this.Clients.Caller.updateStatus("50% Completed");
Thread.Sleep(1000);
this.Clients.Caller.updateStatus("75% Completed");
Thread.Sleep(1000);
this.Clients.Caller.updateStatus("Done");
}
}
}


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SignalR - Long Running Process</title>
</head>
<body>
<h1>Long Running Process</h1>

<p>Status:</p>

<ul id="status">
<li>Loading hub...</li>
</ul>

<script src="/bundles/jquery"></script>
<script src="/Scripts/jquery.signalR-1.0.0-alpha2.js"></script>
<script src="/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var hub = $.connection.testHub;

hub.updateStatus = function (message) {
$("#status").append("<li>" + message + "</li>");
};

$.connection.hub.start().done(function () {
$("#status").children().first().text("Hub loaded.");
hub.longRunningProcess();
})
.fail(function() {
$("#status").children().first().text("Hub failed");
});
})
</script>
</body>
</html>

当我运行该页面时,出现以下(Firebug)错误:

TypeError: hub.longRunningProcess is not a function
hub.longRunningProcess();

如果我查看/signalr/hubs,我会在文件末尾看到以下脚本:

signalR.testHub = signalR.hub.createHubProxy('testHub'); 
signalR.testHub.client = { };
signalR.testHub.server = {
longRunningProcess: function () {
return signalR.testHub.invoke.apply(signalR.testHub, $.merge(["LongRunningProcess"], $.makeArray(arguments)));
}
};

任何关于我出错的地方的建议/指示将不胜感激。

最佳答案

我发现了问题。客户端脚本应如下所示:

      $(function () {
var hub = $.connection.testHub;

hub.client.updateStatus = function (message) {
$("#status").append("<li>" + message + "</li>");
};

$.connection.hub.start().done(function () {
$("#status").children().first().text("Hub loaded.");
hub.server.longRunningProcess();
})
.fail(function() {
$("#status").children().first().text("Hub failed");
});
})

请注意,在集线器方法声明中添加了 .client 和 .server 属性,例如hub.client.updateStatus() 和 hub.server.longRunningProcess()

关于SignalR - 无法加载集线器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com