2011-11-16 37 views
5

我有幾個SignalR基本演示在本地工作(聊天等),我知道推送到服務器,然後讓它廣播到所有連接的客戶端。ASP.NET C#SignalR流到客戶端

我的問題是我該如何利用SignalR將數據「流」到客戶端。例如,在使用Twitters streaming API的NodeJS/Socket.IO中看到了一些例子。

是否有任何SignalR流式傳輸示例?這可能如何工作?

回答

10

查看SignalR.Samples項目中的示例。那裏有一個流媒體樣本。

服務器端的連接:生成流

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

這是確定的,如果你是廣播到所有客戶端

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

代碼。但是如果你想把特定的客戶推到後臺工作的結果呢?這是我目前的情況......謝謝。 –

+1

保存某處存儲的連接ID列表並將其發送給特定的客戶端。 – davidfowl

1

爲什麼不直接使用SignalR告訴客戶端通過HTTP以舊式方式啓動下載?或者,您是否以不同的方式使用.NET中的Stream

如果您只是指廣播外部事件,沒有任何內容表明其中一個客戶端不能是其他一些發送有趣數據事件以進行中繼的服務。