如何为我的signalR中的hubClass添加回调功能,以在延迟的情况下向客户端更新当前工作状态? - javascript

我是signalR的新手。我正在signalR中开发一个简单的应用程序。要求是,signalR需要在一定时间延迟下向客户端重复更新当前时间。虽然我开始运行,但是代码仅获得服务器响应一段时间。它不会一次又一次地重复。我需要一次又一次地回调sameHubclass来更新当前时间到客户端!

这是我的代码:

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>

HubClass:-

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启动类:-

 [assembly: OwinStartup(typeof(Time.Startup))]

 namespace Time
  {
    public class Startup
     {
        public void Configuration(IAppBuilder app)
         {
           app.MapSignalR();
         }
     }
 }

如何在SignalR的Javascript客户端代码中为HubClass添加回调功能。

这是我当前的没有回调函数和timedelay的输出:

如何为我的signalR中的hubClass添加回调功能,以在延迟的情况下向客户端更新当前工作状态? - javascript

但是signalR和.net客户端应用程序还是可以正常工作。我需要为hubclass设置时间延迟并定期回调samehub类吗?

如何为我的signalR中的hubClass添加回调功能,以在延迟的情况下向客户端更新当前工作状态? - javascript

是否可以在一段时间内回调服务器中的同一集线器类?
为此,我补充说,hubclass中的时间延迟。我在服务器中回调了hubclass。它将无法正常工作。有人可以为我提供解决方案吗?

参考方案

理想情况下,您希望使用一个计时器,该计时器以当前时间调用broadcastMessage方法。但是,您的send集线器方法存在一些问题。此外,SignalR会为每个呼叫实例化集线器类,并且不会维护状态。

45码