2012-04-24 77 views
4

我想要將數據從客戶端(桌面或移動設備)傳輸到託管服務器。它不是大量的數據,每1/10秒1個字節 - 但數據需要立即流式傳輸(無緩衝),並且連接需要長時間保持活動狀態(比如10分鐘)。是否可以通過http傳輸客戶端到服務器的數據?

由於服務器託管,我沒有能力使用套接字 - 只是http。

我知道在服務器端,如果我連接到客戶端,我可以使用持久連接並寫入響應流。

但有沒有辦法做到這一點反向,其中客戶端有一個持久連接到服務器,並寫入請求流?

澄清: 我不必將此客戶端 - >服務器通信完成爲持久http連接,我只是想知道是否有可能,這樣我就可以與我計劃的服務器對稱 - >客戶端持久http連接。

從我聽到的,這聽起來像我應該能夠做單個http帖子,並實現相同或類似的延遲。

回答

1

我會繼續和提供答案我自己的問題,這似乎是:

它在技術上可能做到從客戶機 - >服務器的持久HTTP連接,但沒有人實現它,因爲使用創建單個http請求的常規方法似乎足夠快,適合每個人的目的。所以這就是我最終做的,只需使用WebRequest.Create和HttpWebRequest類並相信框架正在處理KeepAlive。在我看來足夠快的原型中,儘管真實世界的表現還有待觀察。

+0

它在現實世界中足夠快嗎? – Felix 2013-02-21 22:24:41

+0

@nissemand我已經非正式地測試了它的跨國(美國),似乎有相當不錯的響應時間(可能小於250毫秒) - 這是客戶端 - >服務器 - >另一個客戶端 – PhilChuang 2013-02-22 01:37:18

+0

真棒,你認爲這將工作爲更大數量的數據?說一個vdieo? – Felix 2013-02-22 02:00:07

0

AFAIK,當WCF託管在IIS中時,流式傳輸不起作用。

我發現this CodeProject article表示它已在WCF 4.5中修復。

你能讓客戶每1/10秒發出新的呼叫嗎?如果您使用HTTP 1.1,則TCP連接應保持打開狀態。

0

我不確定這是否是一個好用例,但SignalR可能適合您。

+1

我與SignalR的Damian Edwards談過,看起來像SignalR只是服務器 - >客戶端持久連接。 – PhilChuang 2012-04-24 16:45:29

+0

是的,我不確定這是否合適。 – mgnoonan 2012-04-24 17:58:44

1

也許WebSocket將是有用的。它可以讓你通過HTTP創建一個「套接字」,所以你可以用它通過HTTP將數據從客戶端發送到服務器。

相關問題