去的時候沒有叫我有下面的JS代碼signalR客戶端功能通過CDN
該輪轂代碼
public class MyHub : Hub
{
public override Task OnConnected()
{
using (var conn = new SqlConnection(ConnectionString))
{
conn.Open();
//Using Dapper
var data = conn.Query("SELECT data FROM Sql").ToList();
return Clients.Caller.initChart(data);
}
}
}
這工作完全在我的機器上(Win7Pro,IIS 7)但是,當我將它部署到我們的服務器(Win2008R2,iis7)時,它不會調用initChart
函數。我已經在服務器上安裝了VS,當我調試該進程時,OnConnected
事件被調用併成功完成,但客戶端上沒有任何反應。沒有JS錯誤或服務器端錯誤發生,我可以看到。
只是爲了進一步混淆事情,我有一個NServiceBus處理程序調用客戶端聲明的另一個函數,每次都調用該函數,我在那裏放置一個瀏覽器斷點&我可以看到它被調用。
檢查我的機器上的signalR日誌,它使用SSE,但在服務器上它回退到長輪詢。
更新:剛剛意識到服務器坐在Akamai的DSD後面,如果我沒有經過這個,它的工作原理,但我不明白爲什麼它有所作爲。
月2日更新:
這裏是爲connect?transport=serverSentEvents&connectionId=9fce5552-4c2e-4739-93ea-501dda0a0654&connectionData=%5B%7B%22name%22%3A%22navigationtiminghub%22%7D%5D&tid=9 HTTP/1.1
呼叫
首先,當我直接打電話到原點請求的不同響應頭:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/event-stream
Expires: -1
Server: Microsoft-IIS/7.5
Date: Mon, 07 Jan 2013 01:08:26 GMT
,這是Akamai的響應。注意,根據Wireshark的,從我們的服務器與Akamai的響應是與上述相同的反應
HTTP/1.1 200 OK
Content-Type: text/event-stream
Server: Microsoft-IIS/7.5
Expires: Mon, 07 Jan 2013 01:07:23 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Mon, 07 Jan 2013 01:07:23 GMT
Content-Length: 486
Connection: keep-alive
另外,在第一個,所述連接保持打開(因爲它應該),並在其關閉第二。
更新3:這純粹是一個Akamai問題,我們只是切換到Edgecast &他們正確地響應SSE連接。
嘗試啓用登錄。 $ .connection.hub.logging = true – davidfowl
好的,謝謝,在服務器SSE失敗,回落到longPolling –
是否有任何服務器端錯誤? – davidfowl