2011-11-16 14 views
5

Ho un paio di demo di base SignalR che funzionano localmente (chat, ecc.) E capisco che si spinga sul server per poi trasmetterlo a tutti i client connessi.ASP.NET C# SignalR Stream al client

La mia domanda è come potrei utilizzare SignalR per "trasmettere" i dati al client. Ad esempio, sono stati visualizzati esempi in NodeJS/Socket.IO che utilizzano l'API di streaming Twitters.

Esistono esempi di streaming SignalR? Come potrebbe funzionare?

risposta

10

Dai uno sguardo agli esempi nel progetto SignalR.Samples. C'è un campione di streaming in là. attacco laterale

Server:

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

codice che genera il flusso

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

codice lato client

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

Questo è ok se si sta trasmettendo a tutti i clienti. Ma cosa succederebbe se volessi spingere a clienti specifici il risultato di un lavoro di background? Questo è il mio scenario attuale ... Grazie. –

+1

Mantenere un elenco di ID di connessione memorizzati da qualche parte e inviarlo a client specifici. – davidfowl

1

Perché non utilizzare solo SignalR per dire al client di avviare un download su HTTP alla vecchia maniera? O stai usando Stream in un modo diverso in termini di .NET?

Se si intende solo trasmettere eventi esterni, non c'è nulla che dice che uno dei client non può essere un altro servizio che sta inviando eventi di dati interessanti da inoltrare.

Problemi correlati