亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

高效的狀態(tài)協(xié)調(diào)的制作方法

文檔序號:6495571閱讀:198來源:國知局
高效的狀態(tài)協(xié)調(diào)的制作方法
【專利摘要】在此描述的實施例通常涉及用于使用令牌作為狀態(tài)更新的長輪詢請求的雙向參數(shù)的方法和系統(tǒng)??蛻舳讼蚍掌鬏喸儬顟B(tài)更新,在其中,更新可能是服務器事件的結果。散列服務器狀態(tài)數(shù)據(jù)以生成表示當前狀態(tài)數(shù)據(jù)的令牌/散列。服務器將該令牌/散列與從客戶端接收的輪詢請求中的所述令牌/散列進行比較。如果令牌不同,服務器將具有服務器令牌的實際狀態(tài)數(shù)據(jù)發(fā)送給客戶端。通過使用令牌作為請求參數(shù),避免了不必要的狀態(tài)更新,并且,通過限制狀態(tài)更新的數(shù)據(jù)的推送,更加快速地實現(xiàn)了客戶端/服務器的同步。而且,客戶端可以通過發(fā)送令牌請求參數(shù)的空的或隨機/缺省值來強制對輪詢響應。
【專利說明】高效的狀態(tài)協(xié)調(diào)
【背景技術】
[0001]使用通過諸如Web瀏覽器之類的瀏覽器進行輪詢來請求來自諸如Web服務器之類的服務器的數(shù)據(jù)已經(jīng)變得日益流行。在Web瀏覽器和Web服務器之間的數(shù)據(jù)交換中,Web瀏覽器或客戶端在嘗試實現(xiàn)客戶端和服務器之間的同步時通常向服務器請求內(nèi)容更新。響應于每個請求,服務器發(fā)送一個完整的響應。通過每次發(fā)送一個完整的響應,即使是在服務器處沒有對這樣的數(shù)據(jù)做出更新的情況下,在響應于客戶端的請求而發(fā)送數(shù)據(jù)時,這樣的請求和響應交換不必要地消耗了網(wǎng)絡的資源。而且,來自與單個Web服務器通信的許多瀏覽器對Web服務器內(nèi)容和更新的不斷增加的需求引起了對系統(tǒng)資源的濫用,并導致結合了在試圖協(xié)調(diào)客戶端內(nèi)容與服務器更新時的低效的等待時間。
[0002]在嘗試更加有效地在瀏覽器和服務器之間交換內(nèi)容時,長輪詢,例如超文本傳輸協(xié)議(HTTP)長輪詢,允許Web服務器在在該服務器處發(fā)生一個事件或其它事件觸發(fā)服務器活動時再將數(shù)據(jù)推送給瀏覽器。通過長輪詢,瀏覽器或客戶端將一個長輪詢請求發(fā)送給服務器以獲得在服務器處的事件。這樣的長輪詢技術有時被稱為“彗星"Web應用模型的部分,所述模型用于在不需要瀏覽器特地請求這樣的數(shù)據(jù)的情況下使用長期保持HTTP請求來將數(shù)據(jù)從服務器推送到瀏覽器。在典型的長輪詢或彗星實現(xiàn)中,由服務器保持客戶端請求直到服務器事件發(fā)生。當一個事件發(fā)生時,服務器在一個完整響應中將新數(shù)據(jù)發(fā)送給瀏覽器。這樣,對服務器的請求持久存留,直到服務器已經(jīng)將新數(shù)據(jù)發(fā)送。一旦接收到響應,瀏覽器向服務器發(fā)送另一個請求以等待后續(xù)的事件。然而,由于每個服務器響應對應于一個服務器事件,不必要的更新還是發(fā)生了并且不同步的客戶端經(jīng)歷了在協(xié)調(diào)內(nèi)容和服務器中的等待時間。這些服務器事件中的一些對于實現(xiàn)同步并不是必需的,例如在當服務器開始基于中間事件發(fā)送新數(shù)據(jù)時客戶端已經(jīng)處于與服務器的當前狀態(tài)相同的狀態(tài)時。因此,當客戶端由于例如與因特網(wǎng)斷開而導致不同步時,該客戶端試圖通過處理具有關于先前服務器事件的數(shù)據(jù)的潛在的大量的響應消息來追趕當前服務器的狀態(tài)。對于慢的客戶端來說保持與快速改變的服務器的同步是尤其困難的,因為在服務器已經(jīng)做出進一步改變時,該客戶端經(jīng)常還在處理先前的事件。而且,在客戶端落后于服務器的情況下,為了能夠達到與服務器同步,對于客戶端來說某些臨時事件是可以忽略的。然而,基于服務器事件的數(shù)據(jù)推送則不管事件是否對客戶端有用都將它們推送至客戶端以實現(xiàn)與服務器的當前狀態(tài)的最終同步。
[0003]雖然本【背景技術】中著眼于特定的問題,但本發(fā)明決不旨在限于解決那些特定問題。

【發(fā)明內(nèi)容】

[0004]各實施例通常涉及通過令牌機制將服務器處的狀態(tài)數(shù)據(jù)推送到客戶端。具體而言,令牌被用作狀態(tài)更新的長輪詢請求的多向(例如雙向)參數(shù),以實現(xiàn)在服務器和客戶端之間的高效的狀態(tài)協(xié)調(diào)。諸如Web服務器之類的服務器接收狀態(tài)更新。例如,服務器可以從包括文檔編輯會話的應用中接收狀態(tài)更新,在該會話中,對共同創(chuàng)作的文檔做出改變,例如,被發(fā)送到服務器或發(fā)送到在服務器上執(zhí)行的管理模塊。管理模塊接著改變服務器的狀態(tài)以反映所接收的狀態(tài)更新。服務器隨后計算期望要在服務器和客戶端之間被同步的狀態(tài)的摘要/散列。在這樣做時,生成包括散列值的令牌。一旦從客戶端接收到對任意狀態(tài)更新的請求,服務器將隨客戶端請求一起接收的令牌與服務器上的令牌進行比較以確定所述令牌是否不同。如果所述令牌是相同的,則客戶端具有數(shù)據(jù)的當前狀態(tài)并且不需要將其內(nèi)容與服務器進一步協(xié)調(diào)。取而代之地,服務器保持具有所接收的令牌的該客戶端請求,即長期保持請求,直到在服務器狀態(tài)中發(fā)生改變。然而,如果所述令牌不同,則客戶端不具有當前狀態(tài)。服務器隨后將服務器上的具有當前令牌的實際狀態(tài)發(fā)送給客戶端。在各實施例中,客戶端可以隨后更新其數(shù)據(jù)并存儲所接收的令牌以供與后續(xù)的狀態(tài)更新請求一起發(fā)送。如所示,在各實施例中,來自客戶端的請求是作為長輪詢技術的一部分的長期保持請求。在更多的實施例中,客戶端的長輪詢包括HTTP長輪詢。在其他實施例中使用常規(guī)輪詢。
[0005]在附加實施例中,客戶端可以強制服務器對狀態(tài)更新的請求立刻響應。在其它實施例中,服務器被強制在預定的時間周期內(nèi)或例如當系統(tǒng)資源的可用性確定該服務器可以響應時進行響應。根據(jù)一個實施例,在強制服務器響應時,客戶端將令牌值的空值用作在其長期保持請求中的請求參數(shù)發(fā)送給服務器。在另一個實施例中,客戶端將令牌值的隨機/缺省值作為在其長期保持請求中的請求參數(shù)發(fā)送給服務器,其中,所述隨機/缺省值是不太可能與服務器上的當前令牌值匹配的值??栈螂S機/缺省值使得服務器確定在服務器上的令牌和從客戶端所接收的令牌不匹配。因此,服務器通過發(fā)送其狀態(tài)數(shù)據(jù)以及服務器上的令牌給客戶端來立刻應答。這樣,客戶端能夠獲得對其輪詢的立刻響應,而無需等待服務器周期性地推送回數(shù)據(jù)或發(fā)生一個服務器事件。
[0006]提供本
【發(fā)明內(nèi)容】
是為了以簡化的形式介紹將在以下具體實施例中進一步描述的一些概念。本概述并不旨在標識所要求保護的主題的關鍵特征或必要特征,也決不旨在用于限制所要求保護的主題的范圍。
[0007]附圖簡述
[0008]可以參考附圖來更容易地描述本發(fā)明的各實施例,附圖中相同的數(shù)字指示相同的項。
[0009]圖1A示出根據(jù)在此所公開的各實施例的一種用于將令牌用作狀態(tài)更新的長期保持的輪詢請求的參數(shù)的環(huán)境的示例邏輯表示。
[0010]圖1B示出根據(jù)在此所公開的各實施例的一種用于將令牌用作狀態(tài)更新的長期保持的輪詢請求的參數(shù)的另一種類型的環(huán)境或系統(tǒng)(例如三層體系結構)的示例邏輯表示。
[0011]圖2A示出了根據(jù)本公開的各實施例的在圖1A和IB中所示的示例環(huán)境中將令牌用作狀態(tài)更新的長期保持的輪詢請求的參數(shù)的軟件模塊的示例邏輯表示。
[0012]圖2B描述了根據(jù)本公開的各實施例的將令牌/散列用作請求參數(shù)或用作與狀態(tài)在一起的響應返回值的環(huán)境或系統(tǒng)的示例邏輯表示。
[0013]圖3示出了描述根據(jù)本公開的各實施例的用于確定是否推送狀態(tài)更新的過程的操作特性的流程圖。
[0014]圖4示出了描述根據(jù)本公開的一個實施例的用于比較令牌以確定狀態(tài)是否改變的過程的操作特性的流程圖。
[0015]圖5示出了描述根據(jù)本公開的各實施例的用于強制對狀態(tài)更新的請求做出響應的過程的操作特性的流程圖。[0016]圖6示出描述根據(jù)本公開的一個實施例的接收空的或隨機/缺省令牌值以推送數(shù)據(jù)的過程的操作特性的流程圖。
[0017]圖7描繪其上可以實現(xiàn)本發(fā)明的各實施例的示例計算系統(tǒng)。
[0018]詳細描述
[0019]本發(fā)明現(xiàn)將參考其中示出了各具體實施例的附圖來更完整地描述各示例實施例。然而,其它方面能以許多不同的形式來實現(xiàn),并且在本發(fā)明中包括具體的實施例不應被解釋為將這些方面限于在此所述的各實施例。相反,包括附圖中描繪的各實施例是為了提供全面和完整且將預期的范圍完全地傳達給本領域技術人員的公開。虛線可用于示出可任選組件或操作。
[0020]各實施例通常涉及使用具有長輪詢的令牌機制來允許服務器基于數(shù)據(jù)的狀態(tài)中的改變,而不是服務器事件,來將所述數(shù)據(jù)推送到客戶端或瀏覽器。發(fā)送具有狀態(tài)更新的服務器消息給客戶端僅僅避免數(shù)據(jù)的不必要的交換,并因而改進系統(tǒng)效率。例如,在共同操作演示應用中,其中在Web會議環(huán)境中的演示者與通過他們各自的Web瀏覽器通信的各個用戶共享演示幻燈片,演示者可以在幻燈片#1上開始幻燈片放映。在Web瀏覽器A處的客戶端A可以具有當前狀態(tài),在其中,通過其計算機的用戶界面模塊同時顯示幻燈片#1。演示者接著切換到例如幻燈片#5以回答來自另一個觀眾成員的問題。同時,客戶端A變成從Web會議斷開。隨后,演示者切換到幻燈片#3,并接著返回到幻燈片#1。一旦重新連接,客戶端A想要當前狀態(tài)。通過基于令牌機制的長輪詢,服務器或駐留在服務器上的管理模塊確定客戶端A具有當前狀態(tài),因為演示者已經(jīng)切換回幻燈片#1。因此,沒有狀態(tài)更新被發(fā)送給客戶端A。另一方面,對于先前的服務器事件驅(qū)動輪詢技術,在與服務器在幻燈片#1處最終同步之前,首先向客戶端A發(fā)送涉及幻燈片#5和幻燈片#3的更新。此外,在客戶端A回到幻燈片#1時,演示者可能已經(jīng)切換到例如幻燈片#2。因此,通過令牌機制的長輪詢來限制服務器對狀態(tài)更新的響應帶來了許多益處,例如包括更快更廉價地與客戶端瀏覽器通信以及使得客戶端和服務器之間的數(shù)據(jù)更加一致且同步。
[0021]在一個實施例中,諸如Web服務器之類的服務器從諸如包括文檔編輯會話的應用接收狀態(tài)更新。在實施例中,在駐留在服務器上的管理器或管理模塊處接收這樣的更新。隨后,在服務器處的狀態(tài)被改變以反映所接收的狀態(tài)更新。散列該狀態(tài)以生成包括狀態(tài)的散列值的令牌。根據(jù)各實施例,當服務器接收任意狀態(tài)更新的客戶端請求,例如長期保持請求時,服務器將來自客戶端的與請求一起接收的令牌與服務器上的令牌進行比較。如果所述令牌匹配,客戶端與服務器同步,例如客戶端具有所述數(shù)據(jù)的當前狀態(tài)。因此,服務器保持該客戶端請求和接收的令牌。另一方面,如果所述令牌是不同的,則客戶端與服務器不再同步,并且不具有數(shù)據(jù)的當前狀態(tài)。因此,服務器將服務器上的具有當前令牌的實際狀態(tài)推送給客戶端。在各實施例中,客戶端可以隨后更新其數(shù)據(jù)。在更多的實施例中,客戶端還存儲所接收的令牌以用于與后續(xù)的狀態(tài)更新請求一起發(fā)送。根據(jù)各實施例,客戶端和服務器因而維持了數(shù)據(jù)交換的持續(xù)連接,并且,僅當確定客戶端不具有數(shù)據(jù)的當前狀態(tài)時才將狀態(tài)數(shù)據(jù)發(fā)送給該客戶端。如所示,在各實施例中,來自客戶端的請求是作為長輪詢技術的一部分的長期保持請求。在更多的實施例中,客戶端的長輪詢包括HTTP長輪詢。在其他實施例中使用常規(guī)輪詢。
[0022]通過使用令牌機制,服務器能夠?qū)α钆七M行比較,而不是整個數(shù)據(jù)集,以確定狀態(tài)是否改變。這樣,令牌值的比較,而不是狀態(tài)數(shù)據(jù)本身,顯著地增加了服務器對客戶端請求的響應時間。而且,避免了非必要的狀態(tài)更新,因為服務器發(fā)送當前狀態(tài)給客戶端,而不是在確定狀態(tài)中出現(xiàn)差異時插入可能沒有影響服務器的最終當前狀態(tài)的事件。這樣,各實施例提供了被限制于狀態(tài)更新(而不是服務器事件)的服務器響應的數(shù)據(jù)。結果,改進了在客戶端和服務器內(nèi)容之間的一致性,并且數(shù)據(jù)以更快且更少的系統(tǒng)資源的無謂消耗來進行通?目。
[0023]此外,通過長輪詢,客戶端具有了一種快速的方法來檢查狀態(tài)是否從先前接收的狀態(tài)數(shù)據(jù)發(fā)生改變。在實施例中,客戶端僅僅比較令牌或令牌值以取代狀態(tài)數(shù)據(jù),狀態(tài)數(shù)據(jù)可能更加大和/或在確定實際狀態(tài)時呈現(xiàn)更多的復雜性。
[0024]根據(jù)附加實施例,客戶端可以通過在其對服務器的長期保持的輪詢請求中發(fā)送空的和/或缺省值來強制從服務器做出對狀態(tài)更新的請求的立刻響應。在其它實施例中,強制在預定的時間周期內(nèi)或例如當系統(tǒng)資源的可用性允許該服務器進行響應時做出所述響應??盏幕螂S機/缺省值使得服務器確定在服務器上的令牌和所接收的令牌不同。因此,服務器通過發(fā)送其狀態(tài)數(shù)據(jù)以及服務器上的令牌給客戶端來立刻應答。隨后,客戶端能夠獲得立刻響應,而不需要等待下一常規(guī)服務器推送。這樣,例如當客戶端首先啟動與服務器的連接時或當客戶端已經(jīng)斷開時或其它落后于服務器內(nèi)容改變時,客戶端可以更快地與服務器同步。這樣,發(fā)送令牌的空的或隨機/缺省值允許服務器端點在邏輯上從長輪詢切換到常規(guī)輪詢。
[0025]而且,如在一些實施例中示出,令牌的使用強制客戶端不依賴于服務器響應的定時。因此,即使從客戶端隨長輪詢請求接收的令牌與服務器上的令牌匹配,服務器也可以具有立刻進行應答的選項。在例如服務器正被關閉或正在做服務器不想具有開放連接的某些其它動作的情況下,這種靈活性是有用的。
[0026]回到圖1Α,示出了根據(jù)在此所公開的實施例的一種用于將令牌用作狀態(tài)更新的長期保持的輪詢請求的參數(shù)的示例邏輯環(huán)境或系統(tǒng)100Α。客戶端計算機102將對狀態(tài)更新128的請求發(fā)送給服務器108。在一個實施例中,服務器108被稱為前端服務器。在實施例中,可以使用任意數(shù)目的服務器,如由省略符號110和服務器112所示??蛻舳擞嬎銠C102執(zhí)行諸如Web瀏覽器之類的瀏覽器以由例如用戶104查閱網(wǎng)頁。例如,這種網(wǎng)頁或文檔或其它數(shù)據(jù),通過在客戶端計算機102上執(zhí)行的用戶界面模塊來顯示或輸出給用戶界面。在網(wǎng)絡106上將來自客戶端計算機102的對狀態(tài)更新128的請求傳送到服務器108。狀態(tài)更新128的請求包括作為參數(shù)的令牌。在請求128中的令牌是客戶端所知道的在服務器處的狀態(tài)的散列值。例如,在一個實施例中,客戶端可能已經(jīng)接收了在服務器對狀態(tài)更新的前一請求的響應中的令牌。在另一個實施例中,請求128中的令牌值可能包括空的或隨機/缺省值或任意類型的“啞(du_y)”值。根據(jù)一個實施例,當客戶端不知道該值時,例如當客戶端第一次啟動與服務器的聯(lián)系時,可以包括這種空的或隨機/缺省值或啞值。在另一個實施例中,空的或隨機/缺省值或啞值可以由客戶端有目的地使用(同時忽略正確的令牌值)以強制服務器立刻對狀態(tài)更新的客戶端請求進行應答。在另一個實施例中,服務器應答在服務器一能夠響應時就發(fā)生。在又另一個實施例中,在由服務器所設定的預定時間周期內(nèi)發(fā)生服務器應答。在又一個實施例中,在由客戶端所設定的預定時間周期內(nèi)發(fā)生服務器應答。雖然,請求128在圖1A中被示為包括HTTP請求,“GetState (取得狀態(tài))”,但根據(jù)本公開的實施例,任意類型的請求都可使用,而不背離本公開的精神和范疇。
[0027]響應于接收具有令牌128的狀態(tài)更新的請求,服務器108確定在服務器上的當前令牌是否與所接收的令牌匹配。如果令牌不匹配,則服務器108通過將服務器上的令牌值隨狀態(tài)數(shù)據(jù)130 —起發(fā)送給客戶端102來進行響應。
[0028]雖然,圖1A示出在客戶端計算機102和服務器108之間的消息交換,但圖1B還示出附加的可選環(huán)境100B,在其中根據(jù)本公開的更多實施例,服務器108是與后端服務器116通信的前端服務器。圖1A和IB示出了實現(xiàn)本公開的功能性所依靠的示例邏輯環(huán)境。邏輯環(huán)境200不被限制于任何特定實現(xiàn),相反,可以由其上可實現(xiàn)本文所描述的環(huán)境的功能的任何計算環(huán)境來實現(xiàn),并且替代地,包括了可以據(jù)此實現(xiàn)在此所述的環(huán)境的功能性的任意計算環(huán)境。圖1A和IB是出于說明的目的而提供。
[0029]回到圖1B,雖然示出了后端服務器116,根據(jù)在此所述的實施例以及如省略符118以及后端服務器120所示,可以使用多個后端服務器。在后端環(huán)境中的組件用虛線示為可選組件,因為一些實施例在沒有后端服務器的情況下通過與客戶端計算機102和服務器108發(fā)生的令牌機制提供長輪詢,如在圖1A所描述的。在涉及圖1B所示的后端服務器116-120的可能的實施例中,服務器108被稱為前端服務器,在其中,前端服務器108 (或110、112)將從客戶端102最初接收的對狀態(tài)更新132的請求發(fā)送到后端服務器116。如所示,根據(jù)本公開的實施例,由省略符118和后端服務器120所示出那樣,可以使用多個后端服務器。狀態(tài)更新132的請求包括作為請求的參數(shù)的令牌。雖然,請求132在圖1B中被示為包括HTTP請求,"GetState (取得狀態(tài))”,但根據(jù)本公開的實施例,任意類型的請求都可使用,而不背離本公開的精神和范疇。
[0030]在實施例中,一旦從客戶端接收到對具有令牌的狀態(tài)更新請求132,后端服務器116就將服務器上的令牌與所接收到的令牌進行比較。在一個實施例中,在服務器116 (或服務器118、120)上執(zhí)行的管理器(或管理)模塊或組件122將服務器上的令牌與從客戶端所接收到的令牌進行比較。雖然,圖1B將模塊122稱為“管理器”模塊或組件,但該模塊或組件可以被稱為任何名字,而不背離本公開的精神和范疇。而且,根據(jù)實施例,管理模塊122可以包括軟件,盡管其它實施例提供的組件是用于執(zhí)行在此所述的方法的計算機編程代碼的硬件。
[0031]在一個實施例中,服務器116和/或管理器模塊122通過散列服務器處的狀態(tài)來計算服務器上的令牌的值。根據(jù)實施例,在網(wǎng)絡124上從包括例如文檔編輯會話126的應用處接收狀態(tài)更新134。在其它實施例中,從另一個服務器、客戶端計算機、計算機系統(tǒng)、在另一個計算系統(tǒng)上執(zhí)行的工作流和/或Web瀏覽器等接收狀態(tài)更新。文檔編輯會話126是僅出于示例來說明本公開的技術的目的而提供的。根據(jù)本公開的實施例,令牌值被存儲在數(shù)據(jù)庫138中,或者,在其它實施例中,令牌值被存儲在附加給例如服務器116(或118、120)的數(shù)據(jù)庫中。
[0032]服務器116和/或管理器模塊122確定從客戶端132接收到的令牌是否不同于在服務器116上的令牌。如果所述值是不同的,服務器116通過在網(wǎng)絡114向前端服務器108發(fā)送具有該服務器上的令牌的數(shù)據(jù)來對客戶端請求做出響應。根據(jù)一個實施例,一旦接收到數(shù)據(jù)和令牌,前端服務器108隨后在網(wǎng)絡106上將狀態(tài)數(shù)據(jù)和令牌130發(fā)送給客戶端102。在另一個實施例中,前端服務器108在接收到所述數(shù)據(jù)和令牌后并不將其發(fā)送,而是代之以等待一個時間段。根據(jù)各實施例或取決于在其它實施例中可用的系統(tǒng),這個時間段是預先確定的。
[0033]在一個實施例中,從服務器116 (和/或服務器108)所發(fā)送的數(shù)據(jù)136 (或130)包括反映狀態(tài)更新的狀態(tài)數(shù)據(jù)。在其它實施例中,來自服務器116 (和/或服務器108)的數(shù)據(jù)136 (或130)包括除狀態(tài)更新之外的數(shù)據(jù)。雖然各實施例將請求128和132中的令牌提供為要作為參數(shù)包括在狀態(tài)更新的請求中,在更多的實施例中,針對請求128和132發(fā)送的所述令牌是與所述請求分開發(fā)送的。此外,雖然實施例將服務器上的令牌提供為與在響應136和130中的狀態(tài)數(shù)據(jù)一起發(fā)送,其它實施例將服務器上的令牌提供為與所述數(shù)據(jù)分開地發(fā)送。
[0034]邏輯環(huán)境100A和100B不被限制于任何特定實現(xiàn),相反,可以由其上可實現(xiàn)本文所描述的環(huán)境的功能的任何計算環(huán)境來實現(xiàn),并且替代地,包括了可以據(jù)此實現(xiàn)在此所述的環(huán)境的功能性的任意計算環(huán)境。例如,根據(jù)各個實施例,可使用本領域技術人員理解的任何類型的客戶端計算機102。此外,網(wǎng)絡106、114和124雖然被顯示為獨立的單個網(wǎng)絡,但它們可以是本領域技術人員按照慣例理解的任何類型的網(wǎng)絡。根據(jù)一實施例,網(wǎng)絡可以是全球網(wǎng)絡(例如,因特網(wǎng)或萬維網(wǎng),即簡寫為“web”)。其還可以是局域網(wǎng)(例如,內(nèi)聯(lián)網(wǎng))或廣域網(wǎng)。根據(jù)各個實施例,網(wǎng)絡106、114和124上的通信按照一個或多個標準的基于分組的格式(例如,H.323、IP、以太網(wǎng)、和/或ATM)來進行。
[0035]此外,根據(jù)本公開的實施例,可使用本領域技術人員說理解的任何可能的環(huán)境或系統(tǒng)。圖1A和IB是作為僅為了理解本文所公開的實施例的教示的目的的示例來提供。例如,圖1B示出了服務器108-112和116-120。然而,各實施例也覆蓋任何類型的服務器、分開服務器、服務器場、服務器群集或其他消息服務器。還有,圖1A和IB示出客戶端計算機102。然而,如本領域技術人員所理解的,可使用任何類型的小型計算設備而不違背本文所公開的實施例的精神和范圍。例如,盡管僅示出一個客戶端計算機102,另一實施例提供多個小型計算機設備來與服務器108-112和/或116-120通信。在一個實施例中,每個小型計算機設備與網(wǎng)絡106通信,或者,在其它實施例中,多個且單獨的網(wǎng)絡與小型計算機設備通信。在又一實施例中,每個小型計算機設備與單獨的網(wǎng)絡通信。事實上,環(huán)境或系統(tǒng)100A表示實現(xiàn)本文所公開的實現(xiàn)實施例的有效方式,但完全不旨在限制本公開的范圍。此外,示例網(wǎng)絡環(huán)境100A和100B可以被視為由所描述的具體組件組成,例如服務器、客戶端計算機等,或者可替換地,可被視為由對應于這些單元的類似模塊組成。
[0036]在圖1B示出了客戶端計算機102以及服務器108-112和116-120時,圖2A描述了根據(jù)本公開的實施例的用于將令牌用作狀態(tài)請求的長期保持輪詢請求的參數(shù)的軟件模塊或組件的邏輯表示200A??蛻舳擞嬎銠C202A包括用于輪詢服務器204A以查找狀態(tài)更新的Web瀏覽器模塊206。在其它實施例中,客戶端計算機202A在無需Web瀏覽器模塊206的情況下輪詢服務器204A。附加實施例為客戶端計算機202A提供了包括更多模塊,這些模塊包括用于在客戶端計算機202A上執(zhí)行以顯示用于查看從服務器204A所接收的Web頁面、文檔、數(shù)據(jù)等的用戶界面模塊207。根據(jù)在此所述的各實施例,客戶端計算機202A包括如由省略符208所示的用于通過令牌機制提供長輪詢的其它模塊或組件210。
[0037]響應于通過令牌機制接收狀態(tài)更新的長輪詢請求,服務器204A分析所接收的請求和令牌。在一個實施例中,例如,服務器204A包括在服務器204A上執(zhí)行的管理模塊212。管理模塊212例如對應于圖1B中的管理器模塊或組件122,并且可以被稱為任何名字,而不背離本公開的精神和范疇。管理模塊或組件212從例如包括諸如文檔編輯會話的應用接收狀態(tài)更新。管理模塊212改變服務器204A的狀態(tài)以反映該狀態(tài)更新并散列所述狀態(tài)。散列的狀態(tài)值被用于生成反映所述服務器的狀態(tài)的服務器上的令牌。根據(jù)一個示例實施例,管理模塊212使用服務器上的該令牌來與從客戶端202A接收到的令牌進行比較以確定所述客戶端的狀態(tài)是否是當前的。在各實施例中,這樣,管理模塊212通過例如估計從客戶端接收到的令牌值提供了對狀態(tài)更新的客戶端請求進行響應。根據(jù)本公開的各實施例,服務器204A包括如由省略符214所示的其它模塊或組件216,用于通過令牌機制對狀態(tài)更新的長期保持請求進行響應。
[0038]轉(zhuǎn)到圖2B,示出了根據(jù)本公開的用于從客戶端202B向服務器204B請求狀態(tài)更新的環(huán)境或系統(tǒng)200B的邏輯表示。諸如對應于圖2A的客戶端202A的客戶端202B,例如,向服務器204B發(fā)送具有令牌作為其參數(shù)的請求218。服務器204B對應于例如圖2A中的服務器204A。雖然,請求218在圖1A和IB中被示為包括HTTP請求,“GetState (取得狀態(tài))”,但根據(jù)本公開的各實施例,任意類型的請求都可使用,而不背離本公開的精神和范疇。根據(jù)各實施例,作為響應,服務器204B將包括狀態(tài)數(shù)據(jù)和服務器上的令牌的響應消息220發(fā)送給客戶端202B。雖然,圖2B描繪了單個請求218和單個響應220,其它實施例提供了多個請求和響應消息。而且,雖然各實施例通過令牌機制提供了請求218以作為長輪詢技術的一部分的長期保持請求,其它實施例通過令牌機制提供了常規(guī)的輪詢技術。在又一個進一步的實施例中,從客戶端202B向服務器204B發(fā)送請求消息218,而不涉及任何類型的輪詢技術。雖然,圖2A和2B描繪了示例的組件和/或模塊,這些組件和/或模塊僅是出于作為說明本公開的教學示例的目的被提供。在實施例中可以組合模塊和/或組件。而且,在不背離本公開的精神和范疇的情況下,可以使用附加的或更少的模塊和/或組件。
[0039]圖3接著示出了根據(jù)本公開的各實施例的用于確定是否將狀態(tài)更新推送給客戶端和/或瀏覽器的示例操作步驟300。根據(jù)實施例,圖3中描述的示例操作步驟300是從服務器和/或管理組件的角度來示出的。過程300在開始操作302處啟動,并且前進以接收狀態(tài)更新304,在其中,服務器和/或服務器上執(zhí)行的管理組件接收狀態(tài)更新304,例如來自文檔編輯會話的對文檔和/或網(wǎng)頁的改變。例如,對網(wǎng)頁的編輯可在應用程序共同創(chuàng)作會話中發(fā)生。服務器接著基于所接收的狀態(tài)更新改變服務器306處的狀態(tài)。在各實施例中,服務器首先確定所接收的狀態(tài)更新是否表示在服務器處的狀態(tài)數(shù)據(jù)中的實際改變。根據(jù)實施例,如果對狀態(tài)數(shù)據(jù)的實際改變源自所接收的狀態(tài)更新,則改變306服務器的狀態(tài)數(shù)據(jù)。過程300接著前進到散列狀態(tài)操作308,在其中,散列狀態(tài)以生成令牌310值。在實施例中,存儲該令牌。查詢312確定是否有任何令牌被保持。例如,在涉及通過長輪詢的長期保持請求的實施例中,例如,服務器可能已經(jīng)從來自客戶端計算機和/或瀏覽器的狀態(tài)更新的請求中接收到當前服務器保持的令牌。如果所述令牌正在保持,過程300前進至Yes (是)以進行查詢314來確定客戶端保持的令牌是否與服務器上的令牌匹配。如果所述令牌不匹配,過程300前進至NO (否)以發(fā)送具有令牌316的數(shù)據(jù),在其中,將狀態(tài)數(shù)據(jù)和服務器上的令牌值發(fā)送給客戶端316。過程300隨后在結束操作318中止。
[0040]返回查詢312,如果沒有令牌被保持,過程300前進至NO (否),以進行查詢322來確定是否例如從客戶端隨同對狀態(tài)更新的請求一起接收到令牌。如果沒有接收到令牌,過程300前進到NO (否)以接收狀態(tài)更新304,在其中,服務器可以接收狀態(tài)304中的附加改變。步驟304隨后重復查詢312。在查詢322,如果從客戶端接收到令牌,過程300前進到YES (是)以進行查詢314,在其中,確定服務器上的令牌與從客戶端所接收的令牌是否不同。如果所述令牌匹配,過程300前進到YES (是)以到達步驟320來保持具有所接收令牌的客戶端請求,例如長期保持請求。隨后,過程300行進以接收狀態(tài)更新304,并且步驟304-312隨后重復。如果令牌不匹配,過程300前進至NO (否)以發(fā)送具有服務器316上的令牌值的狀態(tài)數(shù)據(jù)給客戶端。過程300隨后在結束操作318中止。
[0041]當圖3說明了用于確定是否推送狀態(tài)更新的過程的示例操作步驟時,根據(jù)本公開的一個實施例,圖4描繪了用于比較令牌以確定狀態(tài)是否已經(jīng)改變的示例操作步驟。根據(jù)一個實施例,圖4中描述的示例操作步驟400是從客戶端和/或瀏覽器的角度來示出的。過程400在開始操作402處啟動,并前進至期望狀態(tài)查詢404,在其中,確定客戶端(和/或瀏覽器)是否期望在服務器處的當前狀態(tài)。例如,根據(jù)一個實施例,所述客戶端可能期望了解其是否與服務器同步。如果不期望在服務器處的狀態(tài),過程400前進至NO (否)以到達結束操作420,在其中,過程400中止。然而,如果期望在服務器處的狀態(tài),過程400前進至YES (是)以請求具有第一令牌/散列參數(shù)406的狀態(tài),在其中,客戶端向服務器發(fā)送請求給以查詢當前狀態(tài)。在一個實施例中,該請求是作為長輪詢技術的一部分的長期保持請求以獲得來自服務器的狀態(tài)更新。根據(jù)本公開的各實施例,第一令牌或客戶端令牌被作為請求406的參數(shù)來隨同這個請求一起發(fā)送。在一個實施例中,例如,客戶端可能在先前已經(jīng)從服務器接收到一個令牌值,在其中客戶端將該令牌值作為請求參數(shù)發(fā)送給服務器。在另一個實施例中,客戶端將該令牌值設置為空的或隨機/缺省值或啞值。在又另一個實施例中,所述令牌與客戶端請求分開地發(fā)送。
[0042]響應于對狀態(tài)更新的請求,客戶端接收具有第二令牌408的狀態(tài)數(shù)據(jù)。在一個實施例中,所述第二令牌是服務器上的令牌值,在其中,服務器上的令牌值表示服務器處的當前狀態(tài)的散列。各實施例將服務器上的令牌作為(包括狀態(tài)數(shù)據(jù)的)響應的一個參數(shù)提供給客戶端。在其它實施例,令牌與狀態(tài)數(shù)據(jù)分開地發(fā)送??蛻舳私又_定410它是否想要比較令牌以確定是否在服務器處已經(jīng)存在任何狀態(tài)改變。在各實施例中,比較令牌為客戶端提供了一種檢查狀態(tài)是否已經(jīng)從前一狀態(tài)更新發(fā)生了改變的快速方法。例如,客戶端可以比較令牌以取代較大/更加復雜的狀態(tài)數(shù)據(jù)。如果客戶端期望比較令牌,過程400前進至YES (是)以進行查詢412來確定令牌是否不同412。根據(jù)各實施例,如果令牌沒有不同,例如它們是匹配的,過程400前進至NO (否)以進行查詢404來確定客戶端是否期望請求狀態(tài)更新,并且過程400隨后重復步驟404-410,或者在結束操作420中止。另一方面,根據(jù)各實施例,如果令牌是不同的,過程前進至YES (是)以更新狀態(tài)416,在其中,客戶端更新狀態(tài)數(shù)據(jù)416,并存儲418第二令牌,或者在步驟408從服務器接收的令牌值。
[0043]返回查詢410,如果客戶端不期望比較令牌以確定是否已經(jīng)存在狀態(tài)改變,過程400前進至NO (否)以進行查詢414來確定在客戶端處的狀態(tài)數(shù)據(jù)是否不同于在步驟408處從服務器接收的狀態(tài)數(shù)據(jù)。在各實施例中,確定狀態(tài)數(shù)據(jù)是否不同與例如在查詢412的確定令牌是否不同相比,顯然更加復雜。如果狀態(tài)數(shù)據(jù)不同,過程400前進至YES (是)以更新操作416并存儲第二令牌418,在其中,客戶端存儲該令牌或從服務器接收的令牌值以與后續(xù)的請求一起發(fā)送。在各實施例中,客戶端盲目地存儲第二令牌并使用接收的狀態(tài)數(shù)據(jù)作為應用需求。通過存儲第二令牌,客戶端可以在給服務器的后續(xù)請求中通過將第二令牌作為后續(xù)請求中的一個參數(shù)來指示其當前狀態(tài)。根據(jù)各實施例,如果狀態(tài)數(shù)據(jù)在查詢44處沒有不同,過程400前進至NO (否)以期望狀態(tài)查詢404,并且步驟404-410重復,或過程400在結束操作420處中止。
[0044]轉(zhuǎn)向圖5,示出了根據(jù)本公開的各實施例的對狀態(tài)更新的強制響應的示例操作步驟。根據(jù)一個實施例,圖5中描述的示例操作步驟500是從客戶端和/或例如Web瀏覽器之類的瀏覽器的角度來示出的。過程500在開始操作502處啟動,并且過程500前進至查詢504以確定客戶端(和/或例如瀏覽器)是否期望強制服務器響應。在各實施例中,在例如在客戶端的服務中斷之后客戶端意識到它與服務器脫離了同步的情況下,該客戶端可能期望來自服務器的強制響應。在其它實施例中,在客戶端位于諸如智能電話之類的便攜式計算設備上并插入到例如允許輪詢的電源的情況下,客戶端期望切換到常規(guī)輪詢,例如通過重復地強制服務器響應來實現(xiàn),所述輪詢通常有更多的計算上需求并消耗更多功率?;蛘撸鳛榱硪粋€示例,客戶端可以確定輪詢更加安全,并且在網(wǎng)絡癱瘓或經(jīng)歷了頻繁的服務中斷的情況下,可能期望周期性地輪詢。而且,客戶端可能期望從長輪詢切換到正?;虺R?guī)輪詢以更加適度地處理源自服務器加載或連接處理問題的錯誤。進一步,由于長輪詢在下述環(huán)境中明顯是不必要的,客戶端可能期望例如通過強制服務器響應來切換到輪詢:在該環(huán)境中,該客戶端在例如該用戶是唯一編輯者的多個用戶編輯環(huán)境中工作。
[0045]根據(jù)各實施例,在強制服務器響應的情況下,該響應可以被立刻發(fā)送。在其它實施例中,服務器根據(jù)預定時間段來進行響應。在又更多實施例中,服務器在由例如可用系統(tǒng)資源確定的時間段中進行響應??梢愿鶕?jù)本公開的實施例應用許多時間段來由服務器進行響應,而不背離本公開的范疇和精神。
[0046]回到圖5,如果客戶端期望強制服務器響應504,過程500前進至YES以請求具有空令牌值506的狀態(tài),在其中,客戶端將該空值作為狀態(tài)更新的請求中的令牌值來傳遞。在另一個實施例中,客戶端將啞值作為令牌值傳遞以強制狀態(tài)響應。這樣,在這種實施例中的客戶端在發(fā)送空或隨機/缺省值或啞值中忽略了正確的令牌值?;蛘撸谄渌鼘嵤├?,客戶端不知道正確的令牌值,例如,當啟動與服務器的連接時。因為服務器接收了用于令牌值的空或隨機/缺省值或啞值,服務器上的令牌不與從客戶端接收的令牌匹配,并且客戶端因此接收了實際狀態(tài)和服務器上的令牌值508。服務器上的令牌值可以被稱為服務器上的令牌、第二令牌等,而不背離本公開的精神和范疇。過程接著前進至查詢510以確定令牌是否不同510,在其中確定在客戶端處的令牌值,例如第一令牌,是否與服務器上的令牌,例如第二令牌,不同。如果所述令牌不同,則自從客戶端先前更新了其狀態(tài)之后,在服務器處的狀態(tài)已經(jīng)改變。在各實施例中,這樣,客戶端與服務器脫離同步。如果確定令牌不同,過程500前進至YES (是)以更新狀態(tài)512并存儲第二令牌514。這樣,從服務器接收的狀態(tài)數(shù)據(jù)被用于更新在步驟512處的客戶端的狀態(tài),并且來自服務器的令牌被存儲514以在可能的后續(xù)對服務器處的狀態(tài)更新的請求中使用。過程500隨后在結束操作516中止。
[0047]回到查詢504,如果客戶端不再期望強制服務器響應,過程500前進至NO (否)以請求具有第一令牌值請求參數(shù)518的狀態(tài),在其中,客戶端不使用空或隨機/缺省值或啞值作為令牌值,但代之以使用正確的令牌/散列值。作為使用正確的令牌/散列結果,不強制來自服務器的立刻響應。替代地,在各實施例中,客戶端等待在服務器處發(fā)生的狀態(tài)中的改變520。在服務器處發(fā)生狀態(tài)改變或更新之后,在步驟508,客戶端從服務器接收狀態(tài)或狀態(tài)數(shù)據(jù)以及第二令牌或令牌值。隨后,重復步驟510-514,并且過程500在結束操作516處中止。
[0048]圖6接著示出描述根據(jù)本公開的一個實施例的接收空的或隨機/缺省值作為令牌值以推送數(shù)據(jù)的示例操作步驟。根據(jù)一個實施例,圖6中描述的示例操作步驟600是從服務器和/或管理組件或模塊的角度來示出的。在開始操作602處啟動過程600,并前進至散列狀態(tài)操作604,在其中,在服務器處的狀態(tài)數(shù)據(jù)被散列以生成散列值的令牌606。接著,服務器(和/或管理模塊或組件)接收具有空或隨機/缺省值作為令牌值的狀態(tài)更新的請求608。在各實施例中,這樣的請求是作為長輪詢技術的一部分的長期保持請求。在各實施例中,長輪詢技術包括HTTP長輪詢。服務器隨后將所接收的令牌或令牌值與在步驟606處生成的令牌進行比較610。因為空的或隨機/缺省令牌值或啞值被作為請求參數(shù)來包括,服務器上的令牌和所接收的令牌不匹配,并且服務器因此發(fā)送或推送612具有在步驟606處生成的服務器上的令牌的狀態(tài)數(shù)據(jù)。過程600隨后在結束操作614中止。
[0049]雖然,圖3-6描述了示例操作步驟,但示出的操作步驟可以被組合到其它步驟和/或重新安排。此外,可使用例如更少或更多的步驟。
[0050]最后,圖7示出可在其上實現(xiàn)本文公開的各實施例的示例計算機系統(tǒng)700。根據(jù)在此公開的各實施例,描述了包括至少一個處理器702的諸如客戶端計算機102、前端服務器108-112以及后端服務器116-120之類的計算機系統(tǒng)700。系統(tǒng)700具有存儲器704,包括例如系統(tǒng)存儲器、易失性存儲器和非易失性存儲器。在其最基本的配置中,計算系統(tǒng)700在圖7中由虛線706示出。另外,系統(tǒng)700還可包括另外的存儲(可移動和/或不可移動),其中包括但不限于磁盤、光盤或磁帶。在圖7中通過可移動存儲708和不可移動存儲710示出這樣的附加存儲。
[0051]如這里所使用的術語計算機可讀介質(zhì)可以包括計算機存儲介質(zhì)。計算機存儲介質(zhì)可包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結構、程序模塊、或其他數(shù)據(jù)等信息的任何方法或技術實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。系統(tǒng)存儲器704、可移動存儲708和不可移動存儲710都是計算機存儲介質(zhì)(即,存儲器存儲)的示例。計算機存儲介質(zhì)可以包括,但不限于,RAM、ROM、電可擦除只讀存儲器(EEPR0M)、閃存或其他存儲器技術、CD-ROM、數(shù)字多功能盤(DVD)或其他光存儲、磁帶盒、磁帶、磁盤存儲或其他磁性存儲設備、或可用于存儲信息且可以由計算設備700訪問的任何其他介質(zhì)。任何這樣的計算機存儲介質(zhì)都可以是設備700的一部分。圖7中的說明不意圖以任何方式限制本公開的范圍。
[0052]如這里所使用的術語計算機可讀介質(zhì)還包括通信介質(zhì)。通信介質(zhì)由諸如載波或其他傳輸機制等已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結構、程序模塊或其他數(shù)據(jù)來體現(xiàn),并包括任何信息傳遞介質(zhì)。術語“已調(diào)制數(shù)據(jù)信號”可以描述以對該信號中的信息進行編碼的方式設定或者改變其一個或多個特征的信號。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡或直接線連接等有線介質(zhì),以及諸如聲學、射頻(RF)、紅外線和其他無線介質(zhì)等無線介質(zhì)。
[0053]系統(tǒng)700還可包含允許該設備與其它設備通信的通信連接716。此外,為了輸入內(nèi)容到例如客戶端計算機102上的用戶界面(UI)(例如由客戶端計算機102上的相應Π模塊(未示出)所提供的)的各字段中,根據(jù)本公開的一實施例,系統(tǒng)700可具有諸如鍵盤、鼠標、筆、語音輸入設備、觸摸輸入設備等之類的輸入設備714。還可包括輸出設備712,諸如顯示器、揚聲器、打印機等。所有這些設備在本領域中是公知的并且不必在此詳細討論。上述設備是示例且可以使用其他設備。
[0054]以上參考附圖描述了本發(fā)明的各實施例,可以理解,可以對本發(fā)明做出本領域技術人員易于想到且被包含在所公開并如所附權利要求書所定義的本發(fā)明的精神和范圍內(nèi)的眾多修改。盡管出于本發(fā)明的目的描述了各實施方式,但可以做出落入本發(fā)明的范圍內(nèi)的各種改變和修改。
[0055]同樣地,雖然本發(fā)明使用了對結構特征、方法動作和含有這些動作的計算機可讀介質(zhì)專用的語言,但是應該理解,在所附權利要求書中定義的本發(fā)明不必限于此處描述的具體結構、動作、特征或介質(zhì)。相反,上述具體特征和動作是作為實現(xiàn)權利要求的示例形式而公開的。實施例的各方面允許多個客戶端計算機、多個遠程服務器、多個中繼服務器、以及多個網(wǎng)絡等?;蛘?,在其它實施例中,使用具有單個前端服務器、單個后端服務器、以及單個網(wǎng)絡的單個客戶端計算機。更多實施例例如提供了具有單個前端服務器且沒有后端服務器的單個客戶端計算機。所屬領域技術人員將認識到在本公開的范圍和精神內(nèi)的其他實施例或改進。因此,這些具體結構、動作、或介質(zhì)是作為實現(xiàn)所要求保護的本發(fā)明的示例性實施例而公開的。本發(fā)明由所附權利要求書進行定義。
【權利要求】
1.一種用于向客戶端推送狀態(tài)數(shù)據(jù)的計算機實現(xiàn)的方法,所述方法包括: 在服務器處接收狀態(tài)更新; 響應于接收所述狀態(tài)更新,改變服務器處的所述狀態(tài); 散列所述服務器處的所述狀態(tài); 生成所述服務器上的令牌,其中所述令牌是所述狀態(tài)的散列; 從所述客戶端接收一令牌; 確定所述服務器上的所述令牌與從所述客戶端接收的令牌是否不同;以及如果所述服務器上的所述令牌和從所述客戶端接收的令牌不同,將具有所述服務器上的所述令牌的狀態(tài)數(shù)據(jù)推送給所述客戶端。
2.如權利要求1所述的計算機實現(xiàn)的方法,其特征在于,所述確定所述服務器上的所述令牌與從所述客戶端接收的令牌是否不同包括:確定所述服務器上的所述令牌的值和從所述客戶端接收的令牌的值是否不同。
3.如權利要求1所述的計算機實現(xiàn)的方法,其特征在于,還包括: 從所述客戶端接收對狀態(tài)更新的請求,其中,從所述客戶端接收的令牌是所述對狀態(tài)更新的請求的一個參數(shù)。
4.如權利要求3所述的計算機實現(xiàn)的方法,其特征在于,還包括: 如果所述服務器上的所述令牌與從所述客戶端接收的令牌并無不同,則保持從所述客戶端接收的請求和接收的令牌。
5.如權利要求3所述的計算機實現(xiàn)的方法,其特征在于,從所述客戶端接收的令牌的值為空。
6.如權利要求5所述的計算機實現(xiàn)的方法,其特征在于,還包括: 確定所述服務器上的所述令牌與從所述客戶端接收的空令牌值不同;以及 將具有所述服務器上的所述令牌的狀態(tài)數(shù)據(jù)推送給所述客戶端。
7.如權利要求5所述的計算機實現(xiàn)的方法,其特征在于,還包括: 響應于空值,在預定時間段中將具有所述服務器上的所述令牌的狀態(tài)數(shù)據(jù)推送給所述客戶端。
8.存儲有計算機可執(zhí)行指令的一個或多個計算機存儲介質(zhì),當由處理器執(zhí)行所述指令時,執(zhí)行一種向服務器輪詢狀態(tài)數(shù)據(jù)的方法,所述方法包括: 由客戶端發(fā)送對所述服務器處的狀態(tài)數(shù)據(jù)的第一請求,其中所述第一請求包括第一令牌; 接收具有第二令牌的所述狀態(tài)數(shù)據(jù); 比較所述第一令牌和所述第二令牌以確定所接收的狀態(tài)數(shù)據(jù)是否與存儲在所述客戶端處的狀態(tài)數(shù)據(jù)不同;以及 如果所述第一令牌和所述第二令牌不同,更新在所述客戶端處存儲的所述狀態(tài)數(shù)據(jù)。
9.如權利要求8所述的一個或多個計算機存儲介質(zhì),其特征在于,所述輪詢包括通過令牌機制的超文本傳輸協(xié)議(HTTP )長輪詢。
10.一種用于通過令牌機制將服務器處的狀態(tài)數(shù)據(jù)推送到客戶端的系統(tǒng),所述系統(tǒng)包括: 處理器;以及耦合到所述處理器的存儲器,所述存儲器包括計算機程序指令,所述計算機程序指令能由所述處理器執(zhí)行以提供: 所述服務器內(nèi)的管理模塊,其中,所述管理模塊被配置為: 接收狀態(tài)更新; 響應于接收所述狀態(tài)更新,改變所述狀態(tài); 散列所述狀態(tài); 生成所述服務器上的令牌,其中所述令牌是所述狀態(tài)的散列; 從所述客戶端接收令牌; 確定所述服務器上的所述令牌與從所述客戶端接收的令牌是否不同;以及如果所述服務器上的所述令牌和從所述客戶端接收的令牌不同,將具有所述服務器上的所述令牌的狀態(tài)數(shù)據(jù)推送給·所述客戶端。
【文檔編號】G06F15/16GK103597465SQ201280029265
【公開日】2014年2月19日 申請日期:2012年6月10日 優(yōu)先權日:2011年6月15日
【發(fā)明者】C·R·海沃斯 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1