ASP.NET поток SignalR C# для клиента

У меня есть пара базовых демонстраций SignalR, работающих локально (чат и т. д.) и я понимаю толчок к серверу, а затем его трансляцию всем подключенным клиентам.

мой вопрос: как я могу использовать SignalR для "потока" данных клиенту. Например, см. примеры в NodeJS / Socket.IO с использованием Twitters streaming API.

есть ли помощью SignalR потокового примеры? Как это может сработать?

2 ответов


взгляните на образцы в SignalR.Образцы проекта. Там есть потоковый образец.

подключение на стороне сервера:

namespace SignalR.Samples.Streaming
{
    public class Streaming : PersistentConnection
    {
    }
}

код, который генерирует поток

ThreadPool.QueueUserWorkItem(_ =>
{
    var connection = Connection.GetConnection<Streaming.Streaming>();
    while (true)
    {
        connection.Broadcast(DateTime.Now.ToString());
        Thread.Sleep(2000);
    }
});

Код На Стороне Клиента

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <script src="../Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
    <script src="../Scripts/jquery.signalR.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            var connection = $.connection('Streaming.ashx');

            connection.received(function (data) {
                $('#messages').append('<li>' + data + '</li>');
            });

            connection.start();
        });
    </script>
</head>
<body>
    <ul id="messages">
    </ul>
</body>
</html>

почему бы просто не использовать SignalR, чтобы сказать клиенту, чтобы начать загрузку по HTTP старомодным способом? Или вы используете Stream по-другому с точки зрения .NET?

Если вы просто имеете в виду трансляцию внешних событий, нет ничего, что говорит, что один из клиентов не может быть какой-то другой службой, которая отправляет интересные события данных для ретрансляции.