我是 signalR 的新手。我正在 signalR 中开发一个简单的应用程序。要求是,信号R需要以一定的时间延迟重复更新客户端的当前时间。当我开始运行时,代码我只得到服务器响应一段时间。它不会一次又一次地重复。我需要回调相同的Hubclass来一次又一次地将当前时间更新到客户端!
这是我的代码:-
Javascript 客户端代码:-
<body>
<div class="container">
<input type="hidden" id="name" />
</div>
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var chat = $.connection.timeHub;
chat.client.broadcastMessage = function (name,current) {
var now = current;
console.log(current);
$('div.container').append('<p><strong>'+name+"="
+ now + '</strong></p>');
};
$("#name").val(prompt("Enter the UserName", ""));
$.connection.hub.start().done(function () {
chat.server.send($("#name").val());
});
});
</script>
</body>
集线器类:-
public class timeHub : Hub
{
public void send(string name)
{
while(true)
{
string current = DateTime.Now.ToString("HH:mm:ss:tt");
Clients.All.broadcastMessage(name,current);
Console.WriteLine(current);
Console.ReadLine();
System.Threading.Thread.Sleep(3000);
send(name);
}
}
}
MyOwin 启动类(class):-
[assembly: OwinStartup(typeof(Time.Startup))]
namespace Time
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
如何在 SignalR 的 Javascript 客户端代码中为我的 HubClass 添加回调功能。
这是我当前的输出,没有回调函数和时间延迟:-
但是 signalR 和 .net 客户端应用程序工作正常。我需要对 hubclass 进行时间延迟并定期回调相同的 hub 类吗?
是否可以在服务器中回调相同的集线器类,但有一定的延迟? 为此,我添加了 hubclass 中的时间延迟。我在服务器中回调 hubclass 。它不起作用。有人能为我提供解决方案吗?
最佳答案
理想情况下,您需要使用一个计时器来调用带有当前时间的broadcastMessage 方法。不过,您的 send
hub 方法存在一些问题。此外,SignalR 会在每次调用时实例化集线器类,并且不会维护状态。
关于javascript - 如何将回调功能添加到 signalR 中的 hubClass 以将当前工作状态更新到客户端并延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797818/