【问题标题】:SignalR: How do i push the contents from server to client automatically in signalr?SignalR:如何在信号器中自动将内容从服务器推送到客户端?
【发布时间】:2017-04-09 07:31:20
【问题描述】:

我正在使用 signalR 创建一个 .net Web 应用程序。我的要求是,当客户端开始托管时,服务器会自动将当前时间值以递归方式推送给客户端。我写了代码,但是signalR不能自动发送消息给客户端?

我想,signalR 需要客户端的一些输入。我知道每次信号器都希望通过集线器从客户端输入。无论如何要在服务器中自动调用客户端吗?

顺便说一句,我写的代码是正确的吗?

这是我的 HUB:-

  public class timeHub : Hub
    {
    public void Send()
    {

        while(true)
        {
        var current = DateTime.Now.ToString("HH:mm:ss:tt");
        Clients.All.broadcastMessage(current);
        Console.WriteLine(current);
        Console.ReadLine();
        System.Threading.Thread.Sleep(5000);

        }
    }
}

我的 Owin 创业班:-

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

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

         }
        }
      }

我的客户端javascript代码是:-

        <div class="container">
        </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 (current) {
            var now = current;
            console.log(current);
            $('div.container').append('<p><strong>' 
                 + now + '</strong></p>');
        };
       $.connection.hub.start().done(function () {

                chat.server.send();
            });
       });
       </script>

如何在没有客户端调用 Signalr 的情况下自动将内容从服务器推送到客户端?

谁能给我一个解决这个问题的方法?

【问题讨论】:

    标签: javascript c# server client signalr


    【解决方案1】:

    我看到的是您的代码是没有调用您的 timeHub:Send() 方法。 您已经定义了一个集线器并定义了一个无限循环的 Send 函数,但是看起来您好像忘记了启动 Send() 泵。
    你需要打电话给它!请记住,由于您的 Send() 函数将永远不会返回,因此任何线程调用 Send() 都将被阻止。

    我建议您启动一个任务,这样您的主线程就不会被对 Send() 的初始调用阻塞。

    祝你好运!

    【讨论】:

    • 谢谢Monza。在clinet中添加发送方法后,我无法自动获得服务器响应?我做错了什么?
    • $.connection.hub.start().done(function () { chat.server.send(); });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多