2011-09-02 71 views
1

是否使用WebSockets(彗星,服務器推送,...),以克服長時間運行的HTTP請求的問題是一個好主意?想象一下,你有一個應用程序,建立在全棧Web應用程序框架上,如Django或Rails。你想以表演的名義做一些後臺處理。從程序員的角度來看,這很容易做到,但問題出現在UI中。的WebSockets後臺處理

用戶需要立即響應。所以我的想法是使用Socket.IO + node.js + AMQP消息傳遞,在後臺任務完成後將通知推送回瀏覽器。我喜歡這個想法,但它仍然感覺像很多工程,只是因爲我們不想在我們的主應用程序中長時間運行請求。競爭的想法可能是使用另一個更強大的Web服務器,它可以處理許多長時間運行的HTTP請求。

你認爲哪一個更好?

回答

1

的WebSockets本身提供了這裏一點在如XHR或jsonp長輪詢。從用戶的角度來看,任何一個傳輸的消息都會感覺相同。從服務器的角度來看,打開WebSocket連接或打開長輪詢不是暴力不同。

你真的做什麼,並且應該考慮底層技術的做,是構建應用程序到異步 - 事件驅動。

+0

on NODEJS是的,但考慮php + apache。每次長期民意調查都會在服務器端獲得一個進程。 –

2

使用Websocket到 克服長時間運行的HTTP請求的問題是一個好主意嗎?

是的。與其他技術(如連續或長時間輪詢)相比,您可以節省大量的數據。試着看this article,即步驟3的一部分。

我喜歡這個想法,但它仍然感覺像很多工程,只是 ,因爲我們不想在我們的主應用程序中長時間運行請求。 競爭的想法可能是使用另一個更健壯的Web服務器,即 可以處理許多長時間運行的HTTP請求。

Socket.io爲您抽象傳輸層和後備解決方案(如果沒有websockets)。如果你只想使用socket.io/node.js/AMPQ棧進行消息傳遞和通知,那麼它不應該是一個複雜或耗時的開發過程,但它可能取決於各種各樣的東西。

通過委派消息/通知,Node.js的,你可以放心你的主要應用在很大程度上得益於其無阻塞架構雖然你將介紹另一種技術依賴。另一方面,選擇性能更高的Web服務器可能會在一段時間內解決您的性能問題,但最終可能會縮放您的系統(無論是啓動還是停止)。