Как я могу сделать приложение времени сервера с SignalR - PullRequest
0 голосов
/ 24 февраля 2012

Я опираюсь на СигналR.Как я могу написать простое приложение, чтобы пользователь мог видеть серверное время в режиме реального времени, используя Hub.Каждую 1 секунду сервер будет отправлять время с сервера на подключенных клиентов

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

вы можете сделать, когда используете поток.

Пример класса концентратора:

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,Тема отправляет сообщение на страницу каждую секунду.

0 голосов
/ 09 апреля 2012

В Global.asax в методе Application_Start(object sender, EventArgs e) создайте фоновый поток и запустите его.В этом потоке вам нужно будет сделать это, чтобы получить доступ к вашему хабу:

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

NB DateTime.UtcNow почти всегда предпочтительнее, поскольку он не прыгает дважды в год.

0 голосов
/ 01 апреля 2012

Создайте слушателя и ПОДНИМАЙТЕ СОБЫТИЕ при добавлении УВЕДОМЛЕНИЯ :) Таким образом, вам не нужно будет постоянно проверять базу данных:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...