如何使用SignalR制作服务器时间应用程序

时间:2012-02-24 03:28:24

标签: signalr

我在倾斜SignalR。如何编写一个简单的应用程序,以便用户可以使用Hub实时查看服务器时间。每1秒,服务器将从服务器向连接的客户端发送时间

3 个答案:

答案 0 :(得分:3)

你可以在使用线程时做。

示例Hub类:

public class ServerTime : Hub
{
    public void Start()
    {
        Thread thread = new Thread(Write);
        thread.Start();
    }

    public void Write()
    {
        while (true)
        {
            Clients.settime(DateTime.Now.ToString());
            Thread.Sleep(1000);
        }
    }
}

示例脚本:

<script type="text/javascript">
    $(document).ready(function () {
        var time = $.connection.serverTime;
        $("#btnTest").click(function () {
            time.start();
        });

        time.settime = function (t) {
            $("#Time").html(t);
        };
        $.connection.hub.start();
    });
</script>
<div id="Time"></div>
<input id="btnTest" type="button" value="Test"/>

单击btnTest时线程将开始工作。 线程每隔一秒向页面发送消息。

答案 1 :(得分:0)

Application_Start(object sender, EventArgs e)方法的Global.asax中创建一个后台线程并启动它。在该线程中,您需要执行此操作才能访问您的集线器:

IConnectionManager connectionManager = AspNetHost.DependencyResolver
                                         .Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<ServerTime>();
clients.settime(DateTime.UtcNow.ToString());

NB DateTime.UtcNow几乎总是可取的,因为它一年不会跳两次左右。

答案 2 :(得分:-1)

在添加NOTIFICATION时创建一个监听器并提升事件:)因此,您不必连续检查数据库:)