2016-01-30 36 views
0

我有一個連接到Azure託管的SignalR服務器的Xamarin應用程序。什麼是緩存SignalR Server在Azure Web角色上發送事件?

由於Xamarin是通過單聲道運行的,因此websocket不可用。

當我的服務器託管在Azure移動服務上時,該應用使用了SSE。

由於移動服務太有限,我將服務器移至Web角色。

現在我的應用程序無法使用SSE進行連接,並在5秒超時間隔後回退到長輪詢。

我試着創建一個新的Web角色,只添加SignalR。仍然有同樣的問題。

我已經確定/試過如下:

  1. 它看起來像SSE請求被緩衝的地方在Azure上。如果我使用代理,我可以看到請求,但只有在SignalR超時並關閉連接後纔會收到第一個響應字節。
  2. 我的網絡上沒有代理或類似的東西 - 我仍然可以通過SSE連接到我的舊移動服務服務器。
  3. 我打開了服務器上的跟蹤,它看起來像SignalR正在做它的事情 - 它返回對SSE connect請求的響應。
  4. 我也可以在AuthorizeRequest階段的IIS中看到SSE請求,這意味着連接已打開。
  5. 我禁用了動態壓縮。沒有幫助。

總而言之,SSE連接看起來像是保持打開狀態,但阻止了來自SignalR的數據到達客戶端。

我在這裏讀到這可能是Http平臺處理程序的問題。但據我所知,這與Web角色無關,因爲它是在IIS中運行的正常C#代碼。

+0

您是否嘗試過使用https? – Pawel

+0

@Pawel使用HTTPS修復它!希望我發佈這個問題72令人沮喪的小時前... – daramasala

+0

@Pawel你想發佈這個答案,所以我可以接受它? – daramasala

回答

0

嘗試使用HTTPS - 它會阻止代理與事件流混淆。

相關問題