我已經被賦予設計ASP.net web應用程序的任務,它執行以下操作:如何在Web瀏覽器中顯示實時數據?
(1)相關的移動應用程序將由城市周圍的同事使用。當他們使用移動應用程序時,他們的GPS位置被髮送到服務器。 (2)網絡應用程序必須使用Google地圖繪製城市地圖並顯示標記,以顯示每個員工的位置。
有人向我建議,Web應用程序應該每三分鐘自動刷新一次數據。
但是,我不能停止想知道爲什麼我堅持使用輪詢解決方案;這在21世紀似乎已經過時了。至於瀏覽器和Web服務器之間的通信,我知道兩種解決方案。
一個是長時間運行的HTTP請求,在用戶訪問應用程序期間保持打開狀態。 (在這裏演示:http://danielsadventure.info/webconsoledemo)
另一個是HTML5 Web套接字。
我認爲上述任何一種解決方案都應該足以實時將數據從服務器傳輸到瀏覽器。
這就是說,Web應用程序的數據模型在MS SQL中。我知道沒有辦法讓Web服務器知道何時更新數據模型而不讓Web服務器輪詢SQL服務器。
我想,一種可能的解決方案可能是在Web應用程序加載時從SQL獲取關聯位置,然後當來自關聯者的更新來到關聯位置時,將它們發送到所有連接的Web瀏覽器並同時更新SQL。這將需要讓處理來自該夥伴的傳入數據的線程自動與其他正在向瀏覽器發送位置數據的線程進行通信,我不知道該怎麼做。即使那樣,我也看到自己不得不輪詢另一個線程。
什麼是完成我的客戶的請求而不必訴諸於輪詢解決方案的好方法?如果需要輪詢解決方案,我怎樣才能最大限度地減少它的缺點?
我知道那裏有解決方案。否則,當一封新郵件到達時,GMail會如何告訴你?
編輯:具體情況:假設亞當是在該領域的聯繫人,奧馬爾是運營商使用該應用程序看亞當的下落。
奧馬爾登錄;他的瀏覽器向服務器發送一個請求,該請求會發送一條迴應,告訴Adam所在的位置。奧馬爾的瀏覽器然後啓動一個長期運行的HTTP請求,以接收關於Adam去哪裏的更新。幾分鐘後,亞當跳進一輛公司的卡車,開車下山。隨着卡車開始移動,Adam的移動應用程序向Web服務器發送更新,表明他已經移動。
鑑於上述情況,Web服務器如何與Omar的Web瀏覽器通信Adam已移動(沒有Omar的瀏覽器或Web服務器參與任何類型的輪詢)?
我相信有辦法在MSSQL中創建河流,然後用類似socket.io的方式向客戶端發送更新。 – adeneo
但是,當你在做這種事情時,將Node中的所有內容加以整理似乎更合適。 – adeneo
當數據插入MSSQL服務器時,您是否可以不傳播某種事件,從而導致websocket推送? –