2011-11-16 18 views
5

Mam kilka podstawowych demów SignalR pracujących lokalnie (chat, itp.) I rozumiem pchanie do serwera, a następnie jego emisję do wszystkich podłączonych klientów.ASP.NET C# SignalR Stream do klienta

Moje pytanie brzmi: w jaki sposób mogę wykorzystać SignalR do "przesyłania" danych do klienta. Na przykład, widoczne przykłady w NodeJS/Socket.IO wykorzystujące streaming API Twitters.

Czy są dostępne przykłady strumieniowego przesyłania sygnału? Jak to działa?

Odpowiedz

10

Spójrz na próbki w projekcie SignalR.Samples. Tam jest próbka strumieniowania.

Server podłączenie boczne:

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

kod, który generuje strumień

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

kodu po stronie klienta

<!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> 
+0

To jest ok jeśli nadawania dla wszystkich klientów. Ale co, jeśli chciałbyś przekazać konkretnym klientom rezultat pracy w tle? To mój obecny scenariusz ... Dzięki. –

+1

Zachowaj listę identyfikatorów połączeń przechowywanych gdzieś i wyślij ją do konkretnych klientów. – davidfowl

1

Dlaczego po prostu nie używać SignalR, aby poinformować klienta, aby rozpoczął pobieranie przez HTTP w staroświecki sposób? Lub używasz Stream w inny sposób pod względem .NET?

Jeśli chodzi tylko o rozgłaszanie wydarzeń zewnętrznych, nic nie wskazuje na to, że jeden z klientów nie może być inną usługą wysyłającą interesujące zdarzenia danych do przekazania.

Powiązane problemy