本發(fā)明涉及在線購票技術(shù),尤其涉及一種實時選座方法及裝置。
背景技術(shù):
互聯(lián)網(wǎng)技術(shù)的發(fā)展給人們帶來了極大的便利,也給傳統(tǒng)的產(chǎn)業(yè)帶來了新的契機。以傳統(tǒng)的影院為例,互聯(lián)網(wǎng)技術(shù)的發(fā)展使得影院票務(wù)的電子化成為可能,通過互聯(lián)網(wǎng)提供影院票務(wù)線上預訂/在線選座業(yè)務(wù),使得用戶可以預先瀏覽最近放映的影片,并相應(yīng)進行電子購票,避免了用戶以前觀看影片時需現(xiàn)場購票導致的等待時間較長以及無法預知所放影片的技術(shù)問題。
對于影院來說,為客戶提供一快速的在線選座購票平臺可以有效提升核心競爭力,而從普通用戶的角度出發(fā),如何快速、簡單、舒適的進行在線購票才是最重要的。尤其是當用戶購買偶像的演唱會門票或一期待已久的熱門話劇演出票時,在線選座購票平臺如何在現(xiàn)有庫存票務(wù)不足以滿足強大購買力的情況下,為每一用戶快速購買到用戶想要的票務(wù),有效縮短用戶購票時間,最大化滿足用戶購買需求顯得尤為重要。
線上預訂/在線選座業(yè)務(wù)購票一般包含登錄進入在線選座購票平臺、選座、確認選座有效、支付、生成訂單等多個流程,其中,選座是購票按流程中最耗時的一子流程,也是最容易影響用戶購票體驗的一關(guān)鍵因素。
目前的線上預訂/在線選座業(yè)務(wù)提供的選座方法,采用的是基于http協(xié)議的非實時選座方式,即當用戶進入在線選座購票平臺后,用戶并不知曉哪些座位已被選定,當點擊選擇一預期座位后,通過將選擇的座位信息向管理票務(wù)的服務(wù)端發(fā)送,服務(wù)端判別該座位是否被其他用戶選擇,如果該座位已被其他用戶選擇,在該種情形下,服務(wù)端返回相關(guān)信息,例如,通過視窗(view)以一彈框彈出一提示信息,以告知用戶該座位已經(jīng)被其他用戶選中,請選擇其他座位。瀏覽到該提示信息后,用戶只能關(guān)閉彈框,然后繼續(xù)選擇座位。這樣,在購買票務(wù)尤其是熱門票務(wù)時,用戶往往需要經(jīng)過多次選擇才能完成購票,或者,經(jīng)過幾次選擇的耽誤,座位已經(jīng)被其它用戶選擇完畢,使得選座占用用戶較多時間,購票效率較低,在線購票成功率不高。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供一種實時選座方法及裝置,能夠提升購票效率,以解決現(xiàn)有的選座方法中采用非實時選座方式進行在線購票導致的購票效率及購票成功率不高的問題。
第一方面,本發(fā)明實施例提供一種實時選座方法,包括:
創(chuàng)建與服務(wù)端的websockets連接;
監(jiān)測到繪制為可選狀態(tài)的座位被選中后,通過創(chuàng)建的所述與服務(wù)端的websockets連接將選中的座位信息傳輸至服務(wù)端,以使服務(wù)端向websockets連接的客戶端發(fā)送所述選中的座位信息,并使接收到所述選中的座位信息的客戶端將被選中的座位繪制為不可選狀態(tài)。
結(jié)合第一方面,在第一方面的第一種實施方式中,所述創(chuàng)建與服務(wù)端的websockets連接包括:
獲取服務(wù)端的websocket連接地址;
通過javascript實例化一websocket對象并傳入獲取的websocket連接地址,創(chuàng)建與所述傳入的websocket連接地址的websocket連接。
結(jié)合第一方面的第一種實施方式,在第一方面的第二種實施方式中,所述獲取服務(wù)端的websocket連接地址包括:
客戶端以異步方式獲取服務(wù)端的推送服務(wù)接口,通過所述推送服務(wù)接口獲取所述websocket連接地址。
結(jié)合第一方面的第一種實施方式,在第一方面的第三種實施方式中,在所述獲取服務(wù)端的websocket連接地址之后,通過javascript實例化一websocket對象并傳入獲取的websocket連接地址之前,該方法還包括:
判斷客戶端的當前瀏覽器是否支持websocketapi,如果支持,執(zhí)行所述通過javascript實例化一websocket對象并傳入獲取的websocket連接地址的步驟。
結(jié)合第一方面、第一方面的第一種至第三種中任一種實施方式,在第一方面的第四種實施方式中,所述將選中的座位信息傳輸至服務(wù)端包括:
調(diào)用鎖座接口,以post方式將選中的座位信息異步傳輸?shù)椒?wù)端。
結(jié)合第一方面的第四種實施方式,在第一方面的第五種實施方式中,所述調(diào)用鎖座接口,以post方式將選中的座位信息異步傳輸?shù)椒?wù)端包括:
將選中的座位信息封裝為javascript對象;
通過fetchapi調(diào)用服務(wù)端提供的鎖座接口,通過post方式將所述javascript對象傳輸至服務(wù)端。
結(jié)合第一方面、第一方面的第一種至第三種中任一種實施方式,在第一方面的第六種實施方式中,所述將被選中的座位繪制為不可選狀態(tài)包括:
依次將選中的座位信息,以基于react&redux架構(gòu)的單項數(shù)據(jù)流方式傳輸?shù)胶Y選器中進行座位圖的計算與渲染。
結(jié)合第一方面,在第一方面的第七種實施方式中,所述方法還包括:
在座位被選中后,開始計時;
當計時超過預先設(shè)置的第一計時閾值后仍沒有接收到包含所述選中的座位的訂單成功信息,判斷所述websocket連接是否異常,如果異常,調(diào)用websocket.close()方法關(guān)閉所述websocket連接,并在重新構(gòu)建websocket連接后,向服務(wù)端傳輸將選中的座位信息更新為未被選中的信息。
結(jié)合第一方面的第七種實施方式,在第一方面的第八種實施方式中,所述判斷所述websocket連接是否異常包括:
提取實例化的所述websocket對象的readystate屬性值,利用所述readystate屬性值判斷所述websocket連接是否異常。
第二方面,本發(fā)明實施例提供一種實時選座裝置,包括:
連接創(chuàng)建模塊,用于創(chuàng)建與服務(wù)端的websockets連接;
選座鎖定模塊,用于在監(jiān)測到繪制為可選狀態(tài)的座位被選中后,通過創(chuàng)建的所述與服務(wù)端的websockets連接將選中的座位信息傳輸至服務(wù)端,以使服務(wù)端向websockets連接的客戶端發(fā)送所述選中的座位信息,并使接收到所述選中的座位信息的客戶端將被選中的座位繪制為不可選狀態(tài)。
本發(fā)明實施例提供的一種實時選座方法及裝置,通過創(chuàng)建與服務(wù)端的websockets連接;監(jiān)測到繪制為可選狀態(tài)的座位被選中后,通過創(chuàng)建的所述與服務(wù)端的websockets連接將選中的座位信息傳輸至服務(wù)端,以使服務(wù)端向websockets連接的客戶端發(fā)送所述選中的座位信息,并使接收到所述選中的座位信息的客戶端將被選中的座位繪制為不可選狀態(tài),能夠提升在線購票效率,以解決現(xiàn)有的選座方法中采用非實時選座方式進行在線購票導致的購票效率不高的問題。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明的實施例一實時選座方法流程示意圖;
圖2為本發(fā)明的實施例二實時選座裝置結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明實施例進行詳細描述。
應(yīng)當明確,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
圖1為本發(fā)明的實施例一實時選座方法流程示意圖,如圖1所示,本實施例的方法可以包括:
步驟101,創(chuàng)建與服務(wù)端的websockets連接;
本實施例中,web套接字(sockets)是html5中出現(xiàn)的一個新的api技術(shù),是下一代客戶端與服務(wù)端的異步通訊方式,相比于長輪詢(ajaxlong-polling)技術(shù)等傳統(tǒng)的方式,websockets技術(shù)無論在技術(shù)實現(xiàn)還是性能上會更高一籌,在一個單獨的持久連接上提供全雙工、雙向通訊,服務(wù)端與客戶端可以在給定的時間范圍內(nèi)的任意時刻互相推送信息,并且允許跨域通訊。
本實施例中,服務(wù)端為支持websocket協(xié)議的服務(wù)器,而現(xiàn)有使用標準http協(xié)議的服務(wù)端無法實現(xiàn)websockets協(xié)議,由于http協(xié)議只能實現(xiàn)單向的通信,因而,無論是輪詢(polling)還是長連接(longpolling),都需要由瀏覽器對服務(wù)端發(fā)出http請求,然后由服務(wù)端返回最新的數(shù)據(jù)給客戶端的瀏覽器,需要瀏覽器不斷的向服務(wù)端發(fā)出請求,服務(wù)端依據(jù)請求返回相應(yīng)響應(yīng),由于客戶端和服務(wù)端之間的http連接需要身份驗證,會產(chǎn)生頻繁的身份驗證以及重復的信息發(fā)送。而websocket協(xié)議是基于tcp的一種新的網(wǎng)絡(luò)協(xié)議,能夠?qū)崿F(xiàn)瀏覽器與服務(wù)端全雙工(full-duplex)通信,使得服務(wù)端能夠主動發(fā)送(推送)信息給客戶端而無需等待客戶端的請求,服務(wù)端與客戶端進行雙向通信,可以完全避免頻繁的身份驗證等開銷,同時,利用websocket協(xié)議,可以在服務(wù)端和客戶端之間傳輸數(shù)據(jù)包非常小的少量數(shù)據(jù),服務(wù)端不再被動接收客戶端瀏覽器的請求之后才返回數(shù)據(jù),而是在有新數(shù)據(jù)時就主動推送給客戶端瀏覽器,可以有效減少等待請求的時間,實時性高。
本實施例中,作為一可選實施例,創(chuàng)建與服務(wù)端的websockets連接包括:
a11,獲取服務(wù)端的websocket連接地址;
本實施例中,websocket連接地址包括:未加密的websocket連接地址以及加密的websocket連接地址,其中,未加密的websocket連接地址模式為ws://,加密的websocket連接地址模式為wss://。
本實施例中,作為一可選實施例,還可以獲取服務(wù)端的websocket端口信息。
本實施例中,作為一可選實施例,獲取服務(wù)端的websocket連接地址包括:
客戶端以異步方式獲取服務(wù)端的推送服務(wù)接口,通過所述推送服務(wù)接口獲取所述websocket連接地址。
本實施例中,作為一可選實施例,異步方式為fetchapi異步方式,推送服務(wù)接口為@push_service接口,即客戶端需要與服務(wù)端構(gòu)建連接時,以fetchapi異步方式獲取(get)服務(wù)端的@push_service接口,通過所述@push_service接口獲取websocket連接地址。
a12,通過javascript實例化一websocket對象并傳入獲取的websocket連接地址,創(chuàng)建與所述傳入的websocket連接地址的websocket連接。
本實施例中,websocket連接是在客戶端與服務(wù)端之間http協(xié)議的初始握手階段,將http協(xié)議升級到websocket協(xié)議來建立的,websocket連接的底層仍是tcp/ip連接。具體來說,客戶端在javascript中創(chuàng)建了websockets對象后,生成http請求并傳輸至瀏覽器以向服務(wù)端發(fā)起websockets連接,在取得服務(wù)端返回的http請求響應(yīng)后,觸發(fā)連接進行升級,即將連接使用的http協(xié)議升級為websocket協(xié)議。
作為另一可選實施例,在所述獲取服務(wù)端的websocket連接地址之后,通過javascript實例化一websocket對象并傳入獲取的websocket連接地址之前,該方法還包括:
判斷客戶端的當前瀏覽器是否支持websocketapi,如果支持,執(zhí)行所述通過javascript實例化一websocket對象并傳入獲取的websocket連接地址的步驟。
本實施例中,如果當前瀏覽器不支持websocketapi,則按照現(xiàn)有技術(shù)進行選座購票流程。
本實施例中,在實例化之后,瀏覽器與服務(wù)端創(chuàng)建一websocket連接。
步驟102,監(jiān)測到繪制為可選狀態(tài)的座位被選中后,通過創(chuàng)建的所述與服務(wù)端的websockets連接將選中的座位信息傳輸至服務(wù)端,以使服務(wù)端向websockets連接的客戶端發(fā)送所述選中的座位信息,并使接收到所述選中的座位信息的客戶端將被選中的座位繪制為不可選狀態(tài)。
本實施例中,websockets連接的客戶端是指與服務(wù)端構(gòu)建有websockets連接的所有客戶端,包括:與服務(wù)端構(gòu)建有websockets連接的傳輸選中的座位信息的客戶端以及與服務(wù)端構(gòu)建有websockets連接的其他客戶端。
本實施例中,以影院為例,一個演出票選座項目會根據(jù)票價和場館劃分很多不同的分區(qū),每一分區(qū)設(shè)有若干座位。對于非常搶手的爆款項目來說,開票時間開始后的一段時間內(nèi)通常都是購票的高峰期,這時候會有大量用戶進入該項目進行購票,目前,用戶在選取座位時,不能知曉該座位是否已被其他用戶選取,只有將該選取的座位信息傳輸至服務(wù)端,經(jīng)過服務(wù)端的判別并返回相應(yīng)的判別結(jié)果,才能知曉選取的座位是否已被其它用戶選取,在已被其它用戶選取的情況下,需要再重新選取座位并執(zhí)行相類似的流程,只有在選取的座位未被其它用戶選取的情形下,進行支付生成訂單,使得購票成功率以及效率都較低。
本實施例中,用戶在登錄進入在線選座購票平臺后,能夠供用戶選擇的座位被瀏覽器繪制為可選狀態(tài),不能夠供用戶選擇的座位被瀏覽器繪制為不可選狀態(tài),從而在用戶選擇座位的同時,能實時知曉該分區(qū)的一個或多個座位是否已經(jīng)被其他用戶選取,從而從未被其他用戶選取的座位中選取座位進行購票。
本實施例中,作為一可選實施例,以影院為例,座位信息包括但不限于:座位標識(seatid)、場次標識(showid、分區(qū)標識(areaid)等。當然,實際應(yīng)用中,座位信息還可以是長途汽車上的座位信息、游輪以及火車上的座位信息、飛機上的座位信息、球場座位信息等,本實施例對此不作限定。
本實施例中,作為一可選實施例,可通過在瀏覽器中設(shè)置監(jiān)測進程,用以監(jiān)測用戶對座位的選擇。
本實施例中,作為一可選實施例,將選中的座位信息傳輸至服務(wù)端包括:
調(diào)用鎖座接口,以post方式將選中的座位信息異步傳輸?shù)椒?wù)端。
本實施例中,鎖座接口為@post/tickets鎖座接口,當在線選座購票平臺中的某一個座位被選中時,選中座位的客戶端通過websockets連接的websockets通道,調(diào)用@post/tickets鎖座接口,以post方式將選中的座位信息異步傳輸?shù)椒?wù)端。
本實施例中,作為一可選實施例,調(diào)用鎖座接口,以post方式將選中的座位信息異步傳輸?shù)椒?wù)端包括:
將選中的座位信息封裝為javascript對象;
通過fetchapi調(diào)用服務(wù)端提供的鎖座接口,通過post方式將所述javascript對象傳輸至服務(wù)端。
本實施例中,當用戶在選座頁面選中一個座位,通過fetchapi調(diào)用服務(wù)端提供的一鎖座接口,通過post方式將選中的座位標識(seatid)、場次標識(showid、分區(qū)標識(areaid)所封裝的javascript對象傳給服務(wù)端。
本實施例中,服務(wù)端接收到選中的座位信息(javascript對象)后,將選中的座位信息推送(push)到預先設(shè)置的鎖座列表中,然后從鎖座列表中,通過websockets通道向與其websockets連接的所有客戶端推送該選中的座位信息,當服務(wù)端向客戶端推送信息時,觸發(fā)客戶端的消息(message)事件,客戶端在message事件觸發(fā)后,利用onmeassage的回調(diào)函數(shù),將接收到的javascript對象進行解析,得到選中的座位信息并保存到預先設(shè)置的鎖座存儲器(lockedseatstore)的狀態(tài)樹(state)中,然后,依據(jù)狀態(tài)樹中的座位信息,將選中的座位繪制成不可選狀態(tài)。
本實施例中,作為一可選實施例,將被選中的座位繪制為不可選狀態(tài)包括:
依次將選中的座位信息(每次單個座位),以基于react&redux架構(gòu)的單項數(shù)據(jù)流方式傳輸?shù)胶Y選器(selector)中進行座位圖的計算與渲染。
本實施例中,每一次座位渲染,篩選器都會根據(jù)存儲的座位列表(seatslist)、用戶自己選擇的座位列表(userseatslist)和已經(jīng)被鎖住的座位(lockedseat)的信息來計算出新的座位狀態(tài)數(shù)據(jù)集合,得到更新座位列表(newseatlist),用以替換座位列表(seatslist),每當接收到有新的被實時鎖住的座位時,進行一次座位渲染。
本實施例中,由于采用websockets連接,選中座位至將選中的座位在各客戶端繪制成不可選狀態(tài)的整個過程為異步過程,不需要各客戶端刷新頁面就可以將已經(jīng)被選中(鎖住)的座位實時渲染到座位圖中,在用戶選擇座位后,可以直接進行支付、生成訂單等流程,從而可以有效降低用戶選擇的座位已被其他用戶選擇的情形而導致的選座時間。
本實施例中,作為一可選實施例,在所述創(chuàng)建與服務(wù)端的websockets連接之后,監(jiān)測到繪制為可選狀態(tài)的座位被選中后之前,該方法還包括:
從所述服務(wù)端獲取最新的票務(wù)座位列表并存儲。
本實施例中,在創(chuàng)建與服務(wù)端的websockets連接后,可以在線選座購票平臺中選取所需購買的票務(wù)類型,例如,演出門票,觸發(fā)從服務(wù)端獲取最新的演出門票票務(wù)座位列表并存儲。也可以是直接從服務(wù)端獲取最新的各票務(wù)座位列表并存儲。
本實施例中,作為一可選實施例,該方法還包括:
在座位被選中后,開始計時;
當計時超過預先設(shè)置的第一計時閾值后仍沒有接收到包含所述選中的座位的訂單成功信息,判斷所述websocket連接是否異常,如果異常,調(diào)用websocket.close()方法關(guān)閉所述websocket連接,并在重新構(gòu)建websocket連接后,向服務(wù)端傳輸將選中的座位信息更新為未被選中的信息。
本實施例中,作為一可選實施例,判斷所述websocket連接是否異常包括:
提取實例化的所述websocket對象的readystate屬性值,利用所述readystate屬性值判斷所述websocket連接是否異常。
本實施例中,當出現(xiàn)異常情況時,觸發(fā)實例化的websocket對象的onclose方法,即客戶端根據(jù)websocket對象的readystate屬性來判斷當前的websocket連接是否已經(jīng)進入了異常狀態(tài),如果是,則觸發(fā)實例化的websocket對象的onclose方法調(diào)用websocket.close()方法關(guān)閉websocket連接以釋放資源。
本實施例中,如果在預先設(shè)置的第一計時閾值內(nèi)接收到包含所述選中的座位的訂單成功信息,則正常關(guān)閉websocket連接。
本實施例中,作為一可選實施例,可以通過設(shè)置心跳檢測來完成心跳重連,即在客戶端設(shè)置定時器重新創(chuàng)建websocket連接。
本實施例中,作為另一可選實施例,也可以在用戶選完座位進入到下一個頁面操作(例如,支付頁面)后,則直接斷開websocket連接,恢復為http連接。
本實施例中,通過實時的鎖座方法,即當用戶進入一個分區(qū)選擇座位時,已經(jīng)被選擇的座位會實時的置灰變成不可選狀態(tài),從而能夠?qū)崟r瀏覽到該分區(qū)座位圖中的哪些座位已經(jīng)被別人選擇,因而,用戶只要將自己的視覺范圍直接定位到那些可選狀態(tài)的座位即可,快速選中自己心儀的座位,有效提升購票成功率,購票占用的用戶時間少,購票效率高。
圖2為本發(fā)明的實施例二實時選座裝置結(jié)構(gòu)示意圖,如圖2所示,本實施例的裝置可以包括:連接創(chuàng)建模塊21以及選座鎖定模塊22,其中,
連接創(chuàng)建模塊21,用于創(chuàng)建與服務(wù)端的websockets連接;
選座鎖定模塊22,用于在監(jiān)測到繪制為可選狀態(tài)的座位被選中后,通過創(chuàng)建的所述與服務(wù)端的websockets連接將選中的座位信息傳輸至服務(wù)端,以使服務(wù)端向websockets連接的客戶端發(fā)送所述選中的座位信息,并使接收到所述選中的座位信息的客戶端將被選中的座位繪制為不可選狀態(tài)。
本實施例中,作為一可選實施例,連接創(chuàng)建模塊21包括:連接地址獲取單元以及實例創(chuàng)建單元(圖中未示出),其中,
連接地址獲取單元,用于獲取服務(wù)端的websocket連接地址;
本實施例中,websocket連接地址包括:未加密的websocket連接地址以及加密的websocket連接地址,其中,未加密的websocket連接地址模式為ws://,加密的websocket連接地址模式為wss://。
本實施例中,作為一可選實施例,所述獲取服務(wù)端的websocket連接地址包括:
客戶端以異步方式獲取服務(wù)端的推送服務(wù)接口,通過所述推送服務(wù)接口獲取所述websocket連接地址。
本實施例中,作為一可選實施例,異步方式為fetchapi異步方式,推送服務(wù)接口為@push_service接口。
實例創(chuàng)建單元,用于通過javascript實例化一websocket對象并傳入獲取的websocket連接地址,創(chuàng)建與所述傳入的websocket連接地址的websocket連接。
本實施例中,作為另一可選實施例,連接創(chuàng)建模塊還可以包括:
接口支持判斷單元,用于在所述獲取服務(wù)端的websocket連接地址之后,判斷客戶端的當前瀏覽器是否支持websocketapi,如果支持,通知實例創(chuàng)建單元。
本實施例中,作為一可選實施例,選座鎖定模塊22包括:監(jiān)測單元以及傳輸單元(圖中未示出),其中,
監(jiān)測單元,用于在監(jiān)測到繪制為可選狀態(tài)的座位被選中后,通知傳輸單元;
傳輸單元,用于通過創(chuàng)建的所述與服務(wù)端的websockets連接調(diào)用鎖座接口,以post方式將選中的座位信息異步傳輸?shù)椒?wù)端,以使服務(wù)端向websockets連接的客戶端發(fā)送所述選中的座位信息,并使接收到所述選中的座位信息的客戶端將被選中的座位繪制為不可選狀態(tài)。
本實施例中,作為一可選實施例,以影院為例,座位信息包括但不限于:座位標識(seatid)、場次標識(showid、分區(qū)標識(areaid)等。當然,實際應(yīng)用中,座位信息還可以是長途汽車上的座位信息、游輪以及火車上的座位信息、飛機上的座位信息、球場座位信息等,本實施例對此不作限定。
本實施例中,作為一可選實施例,傳輸單元包括:
封裝子單元,用于將選中的座位信息封裝為javascript對象;
傳輸子單元,用于通過fetchapi調(diào)用服務(wù)端提供的鎖座接口,通過post方式將所述javascript對象傳輸至服務(wù)端。
本實施例中,當用戶在選座頁面選中一個座位,通過fetchapi調(diào)用服務(wù)端提供的一鎖座接口,通過post方式將選中的座位標識(seatid)、場次標識(showid、分區(qū)標識(areaid)所封裝的javascript對象傳給服務(wù)端。
本實施例中,作為一可選實施例,所述將被選中的座位繪制為不可選狀態(tài)包括:
依次將選中的座位信息,以基于react&redux架構(gòu)的單項數(shù)據(jù)流方式傳輸?shù)胶Y選器中進行座位圖的計算與渲染。
本實施例中,作為另一可選實施例,所述裝置還包括:計時模塊以及連接狀態(tài)監(jiān)測模塊(圖中未示出),其中,
計時模塊,用于在座位被選中后,開始計時;
連接狀態(tài)監(jiān)測模塊,用于當計時超過預先設(shè)置的第一計時閾值后仍沒有接收到包含所述選中的座位的訂單成功信息,判斷所述websocket連接是否異常,如果異常,調(diào)用websocket.close()裝置關(guān)閉所述websocket連接,并在重新構(gòu)建websocket連接后,向服務(wù)端傳輸將選中的座位信息更新為未被選中的信息。
本實施例中,作為一可選實施例,所述判斷所述websocket連接是否異常包括:
提取實例化的所述websocket對象的readystate屬性值,利用所述readystate屬性值判斷所述websocket連接是否異常。
本實施例中,如果在預先設(shè)置的第一計時閾值內(nèi)接收到包含所述選中的座位的訂單成功信息,則正常關(guān)閉websocket連接。
本實施例中,作為再一可選實施例,該裝置還包括:
座位更新模塊,用于從所述服務(wù)端獲取最新的票務(wù)座位列表并存儲。
本實施例的裝置,可以用于執(zhí)行圖1所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關(guān)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。
尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是用于實現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實現(xiàn)在任何計算機可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計算機的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計算機可讀介質(zhì)"可以是任何可以包含、存儲、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計算機可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連接部(電子裝置),便攜式計算機盤盒(磁裝置),隨機存取存儲器(ram),只讀存儲器(rom),可擦除可編輯只讀存儲器(eprom或閃速存儲器),光纖裝置,以及便攜式光盤只讀存儲器(cdrom)。另外,計算機可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因為可以例如通過對紙或其他介質(zhì)進行光學掃描,接著進行編輯、解譯或必要時以其他合適方式進行處理來以電子方式獲得所述程序,然后將其存儲在計算機存儲器中。
應(yīng)當理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。
在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
為了描述的方便,描述以上裝置是以功能分為各種單元/模塊分別描述。當然,在實施本發(fā)明時可以把各單元/模塊的功能在同一個或多個軟件和/或硬件中實現(xiàn)。
通過以上的實施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以權(quán)利要求的保護范圍為準。