本發(fā)明涉及互聯(lián)網(wǎng)移動(dòng)端應(yīng)用開發(fā)領(lǐng)域,具體涉及一種用于直播中更新在線人數(shù)的方法和一種用于直播中更新在線人數(shù)的系統(tǒng)。
背景技術(shù):
隨著科技的快速發(fā)展,手機(jī)等智能移動(dòng)設(shè)備的功能越發(fā)強(qiáng)大,為豐富業(yè)余生活,人們經(jīng)常使用智能移動(dòng)設(shè)備進(jìn)行直播及觀看直播,在移動(dòng)端的直播過程中,各個(gè)直播間存在直播人氣的概念,與直播人氣相對(duì)應(yīng)為直播間的當(dāng)前在線人數(shù),某一直播間的當(dāng)前在線人數(shù)越多,說明該直播間越火爆。人氣對(duì)于用戶來說是告知某個(gè)直播間是否火爆的重要信息,同時(shí),人氣對(duì)于主播來說也是一種極大地鼓勵(lì)。
但是,對(duì)于某一個(gè)直播間,主播在直播的過程中,用戶會(huì)進(jìn)出房間,導(dǎo)致主播間的當(dāng)前在線人數(shù)發(fā)生變化,若無法及時(shí)對(duì)移動(dòng)端直播軟件中直播間的當(dāng)前在線人數(shù)進(jìn)行實(shí)時(shí)更新,則直播間會(huì)顯示一錯(cuò)誤的在線人數(shù),從而無法真實(shí)反映當(dāng)前直播間的人氣。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種用于直播中更新在線人數(shù)的方法和一種用于直播中更新在線人數(shù)的系統(tǒng),能夠方便快捷的對(duì)直播間當(dāng)前在線人數(shù)進(jìn)行更新。
為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:包括:
s1:直播客戶端接收彈幕服務(wù)器發(fā)送的直播間當(dāng)前在線人數(shù);
s2:直播客戶端以代理方式將直播間當(dāng)前在線人數(shù)發(fā)送至ios系統(tǒng)的視圖控制器;
s3:根據(jù)獲得的直播間當(dāng)前在線人數(shù),視圖控制器以代理方式向子界面拋出更新直播客戶端ui的通知,所述子界面為直播客戶端ui中顯示在線人數(shù)的視圖界面單元,所述通知的拋出操作在直播客戶端的主線程中進(jìn)行;
s4:子界面獲取更新直播客戶端ui的通知,進(jìn)行子界面中在線人數(shù)顯示的更新。
在上述技術(shù)方案的基礎(chǔ)上,所述更新直播客戶端ui的通知中含有執(zhí)行代碼,所述執(zhí)行代碼用于根據(jù)獲取的直播間當(dāng)前在線人數(shù)更新子界面中的在線人數(shù)顯示。
在上述技術(shù)方案的基礎(chǔ)上,所述更新直播客戶端ui的通知為聲明函數(shù),所述執(zhí)行代碼位于所述聲明函數(shù)中,且所述執(zhí)行代碼的執(zhí)行在直播客戶端的主線程中進(jìn)行。
在上述技術(shù)方案的基礎(chǔ)上,當(dāng)更新直播客戶端ui的通知拋出后:
s301:判斷更新直播客戶端ui的通知中是否含有執(zhí)行代碼,若有,轉(zhuǎn)到s402,若沒有,則結(jié)束;
s302:判斷執(zhí)行代碼的執(zhí)行是否在主線程中進(jìn)行,若是,轉(zhuǎn)到s4,若不是,則將執(zhí)行代碼的執(zhí)行操作調(diào)回主線程中,然后轉(zhuǎn)到s4。
在上述技術(shù)方案的基礎(chǔ)上,所述直播客戶端與彈幕服務(wù)器間基于socket進(jìn)行通訊。
在上述技術(shù)方案的基礎(chǔ)上,拋至ios系統(tǒng)的視圖控制器中的直播間當(dāng)前在線人數(shù),被轉(zhuǎn)化為longlong型的數(shù)據(jù)類型。
在上述技術(shù)方案的基礎(chǔ)上,所述彈幕服務(wù)器按預(yù)設(shè)時(shí)間間隔向直播客戶端發(fā)送房間人數(shù)變化類消息。
本發(fā)明還公開了一種用于直播中更新在線人數(shù)的系統(tǒng),包括:
數(shù)據(jù)接收模塊,其用于接收彈幕服務(wù)器向直播客戶端發(fā)送的直播間當(dāng)前在線人數(shù);
數(shù)據(jù)傳輸模塊,其用于將數(shù)據(jù)接收模塊接收的直播間當(dāng)前在線人數(shù)拋入ios系統(tǒng)的視圖控制器中,以及控制視圖控制器根據(jù)獲得的直播間當(dāng)前在線人數(shù)向子界面拋出更新直播客戶端ui的通知,且所述通知的拋出操作在直播客戶端的主線程中進(jìn)行,所述子界面為直播客戶端ui中顯示在線人數(shù)的視圖界面單元;
數(shù)據(jù)更新模塊,其用于根據(jù)更新直播客戶端ui的通知,進(jìn)行子界面中在線人數(shù)顯示的更新。
在上述技術(shù)方案的基礎(chǔ)上,所述更新直播客戶端ui的通知中含有一執(zhí)行代碼,所述執(zhí)行代碼用于根據(jù)獲取的直播間當(dāng)前在線人數(shù)更新子界面中的在線人數(shù)顯示。
在上述技術(shù)方案的基礎(chǔ)上,所述彈幕服務(wù)器按預(yù)設(shè)時(shí)間間隔向直播客戶端發(fā)送房間人數(shù)變化類消息。
與現(xiàn)有技術(shù)相比,本發(fā)明一種用于直播中更新在線人數(shù)的方法的優(yōu)點(diǎn)在于:通過彈幕服務(wù)器將房間人數(shù)變化類消息發(fā)送給直播客戶端,便于直播客戶端進(jìn)行直播間當(dāng)前在線人數(shù)的更新,彈幕服務(wù)器進(jìn)行消息推送主動(dòng)控制的方式,便于后臺(tái)人員對(duì)消息推送的頻率進(jìn)行靈活控制;同時(shí),使用兩級(jí)代理,從接收的房間人數(shù)變化類消息中獲取直播間當(dāng)前在線人數(shù)以代理的方式拋給視圖控制器,視圖控制器以代理方式向子界面拋出更新直播客戶端ui的通知,有效的對(duì)事件的分發(fā)做了處理,各自完成各自消息的拋出發(fā)送,事件邏輯處理清晰;子界面接收到更新直播客戶端ui的通知后,即可完成直播間的在線人數(shù)的更新,有效反應(yīng)直播間的當(dāng)前人氣。
本發(fā)明一種用于直播中更新在線人數(shù)的系統(tǒng)的優(yōu)點(diǎn)在于:數(shù)據(jù)接收模塊接收到彈幕服務(wù)器發(fā)送的直播間當(dāng)前在線人數(shù),同時(shí)接收的直播間當(dāng)前在線人數(shù)被拋送給視圖控制器,視圖控制器向子界面拋出更新直播客戶端ui的通知,子界面即可進(jìn)行在線人數(shù)顯示的更新,便于主播或觀眾掌握直播間的當(dāng)前人氣,整個(gè)直播間當(dāng)前在線人數(shù)更新過程邏輯分明,且實(shí)施方便。
附圖說明
圖1為本發(fā)明一種用于直播中更新在線人數(shù)的方法的流程圖。
具體實(shí)施方式
以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
參見圖1所示,本發(fā)明實(shí)施例提供一種用于直播中更新在線人數(shù)的方法,用于對(duì)ios系統(tǒng)中直播客戶端內(nèi)直播間在線人數(shù)的更新,本發(fā)明實(shí)施例中,直播客戶端位于操作系統(tǒng)為ios系統(tǒng)的智能移動(dòng)設(shè)備中,智能移動(dòng)設(shè)備為手機(jī)或平板電腦。具體包括:
s1:直播客戶端接收彈幕服務(wù)器發(fā)送的直播間當(dāng)前在線人數(shù),彈幕服務(wù)器以消息的形式向直播客戶端發(fā)送直播間當(dāng)前在線人數(shù),且彈幕服務(wù)器發(fā)送給直播客戶端消息有多種類型,直播間當(dāng)前在線人數(shù)屬于房間人數(shù)變化類消息。直播客戶端使用函數(shù)receiveassistmessagewithtype接受彈幕服務(wù)器發(fā)送過來的消息,函數(shù)receiveassistmessagewithtype中的參數(shù)hosttype用以表示服務(wù)器類型,此處代表彈幕服務(wù)器。
彈幕服務(wù)器發(fā)送給直播客戶端消息的類型,如:彈幕文字類、人數(shù)變化類,人數(shù)變化類又分為全部直播人數(shù)變化類、房間人數(shù)變化類等等,因此當(dāng)直播客戶端收到彈幕服務(wù)器發(fā)送的消息后,需使用函數(shù)isequaltostring判斷收到的消息的類型是否為人數(shù)變化類,若是人數(shù)變化類,則對(duì)消息進(jìn)行相關(guān)的邏輯處理,并使用函數(shù)receiveassistmessagewithtype進(jìn)一步判斷消息是否為receiveassistmessagewithtype類型,receiveassistmessagewithtype類型即表示為房間人數(shù)變化類,因?yàn)橹辈ラg觀看人數(shù)的變化屬于房間內(nèi)地消息,對(duì)此,直播客戶端只需對(duì)房間人數(shù)變化類消息進(jìn)行處理。
s2:直播客戶端以代理方式將直播間當(dāng)前在線人數(shù)發(fā)送至ios系統(tǒng)的視圖控制器,發(fā)送至ios系統(tǒng)的視圖控制器中的直播間當(dāng)前在線人數(shù),被轉(zhuǎn)化為longlong型的數(shù)據(jù)類型,longlong型是objective-c語言的一種數(shù)據(jù)類型,類似double類型。房間人數(shù)變化類消息中直播間當(dāng)前在線人數(shù)的獲取通過函數(shù)[decodergetitem:@"uc"],同時(shí)可以將獲取的直播間當(dāng)前在線人數(shù)記為usercount。
直播間當(dāng)前在線人數(shù)通過代理函數(shù)拋至ios系統(tǒng)的視圖控制器,代理函數(shù)為socketkeeplive。通過代理方式將直播間當(dāng)前在線人數(shù)拋出方式,根據(jù)ios系統(tǒng)的代理特性,只需代理遵從視圖服務(wù)器的代理協(xié)議,同時(shí)實(shí)現(xiàn)-(void)socketkeeplive:(nsstring*)usercount這個(gè)函數(shù),視圖服務(wù)器便能夠接受到代理拋出的直播間當(dāng)前在線人數(shù),整個(gè)消息的通知和接收簡單,同時(shí)僅需視圖服務(wù)器對(duì)直播間當(dāng)前在線人數(shù)消息進(jìn)行處理,無需其它控制器對(duì)消息的前期處理,簡化操作。
s3:根據(jù)獲得的直播間當(dāng)前在線人數(shù),視圖控制器以代理方式向子界面拋出更新直播客戶端ui(userinterface,用戶界面)的通知,直播客戶端ui為智能移動(dòng)設(shè)備中直播客戶端軟件的ui,子界面為直播客戶端ui中顯示在線人數(shù)的視圖界面單元,通知的拋出操作在直播客戶端的主線程中進(jìn)行。更新直播客戶端ui的通知中含有一執(zhí)行代碼,執(zhí)行代碼用于根據(jù)獲取的直播間當(dāng)前在線人數(shù)更新子界面中的在線人數(shù)顯示。根據(jù)ios系統(tǒng)語言的開發(fā)特性,更新ui必須在應(yīng)用的主線程中進(jìn)行,因此,更新直播客戶端ui的通知的拋出操作和執(zhí)行代碼的執(zhí)行均需在直播客戶端的主線程中進(jìn)行。視圖控制器用于控制直播客戶端ui的顯示,直播客戶端ui由多個(gè)視圖界面單元組成,每個(gè)視圖界面單元所顯示內(nèi)容類別不同,每個(gè)視圖界面單元均對(duì)應(yīng)一子界面,子界面即view,由視圖控制器控制,視圖控制器控制即為ios系統(tǒng)中的viewcontroller。本發(fā)明實(shí)施例中子界面為直播客戶端ui中顯示在線人數(shù)的視圖界面單元。
執(zhí)行代碼具體為:
更新直播客戶端ui的通知為一聲明函數(shù),執(zhí)行代碼位于所述聲明函數(shù)中,且執(zhí)行代碼的執(zhí)行在直播客戶端的主線程中進(jìn)行。申明函數(shù)為executeinmainqueue,該函數(shù)中有一參數(shù)block,block即為執(zhí)行代碼。為保證直播間當(dāng)前在線人數(shù)更新的正常進(jìn)行,當(dāng)更新直播客戶端ui的通知拋出后:
s301:判斷更新直播客戶端ui的通知中是否含有執(zhí)行代碼,若有,轉(zhuǎn)到s402,若沒有,則結(jié)束,即申明函數(shù)的執(zhí)行終止。通過判斷執(zhí)行代碼是否存在,是為了避免傳入一執(zhí)行代碼為空的情況,從而導(dǎo)致直播客戶端程序崩潰。
s302:判斷執(zhí)行代碼的執(zhí)行是否在主線程中進(jìn)行,若是,轉(zhuǎn)到s4,若不是,則將執(zhí)行代碼的執(zhí)行操作調(diào)回主線程中,然后轉(zhuǎn)到s4。執(zhí)行代碼的執(zhí)行是否在主線程中通過函數(shù)[nsthreadismainthread]進(jìn)行判斷,若不在主線程,則使用函數(shù)dispatch_async(dispatch_get_main_queue(),block)將執(zhí)行代碼的執(zhí)行操作調(diào)回主線程中。
當(dāng)完成s401和s402的判斷確認(rèn)后,即可進(jìn)行更新直播客戶端ui的通知的拋出過程操作:在執(zhí)行代碼中,使用函數(shù)respondstoselector判斷setpersonnum:number:這個(gè)函數(shù)的實(shí)現(xiàn)是否存在,若存在,則使用函數(shù)[self.danmudelegatenumber:count];將更新直播客戶端ui以代理方式向子界面拋出。
s4:子界面獲取更新直播客戶端ui的通知,進(jìn)行子界面中在線人數(shù)顯示的更新。
直播客戶端與彈幕服務(wù)器間基于socket(編程接口)進(jìn)行通訊,socket是一個(gè)通信鏈的句柄,用來實(shí)現(xiàn)不同虛擬機(jī)、不同計(jì)算機(jī)或不同設(shè)備之間的通信,使用socket將房間人數(shù)變化類消息從彈幕服務(wù)器傳輸?shù)街辈タ蛻舳?,socket通信的數(shù)據(jù)量大且迅速,且占用的服務(wù)器資源小,能夠有效保證房間人數(shù)變化類消息傳輸?shù)臅r(shí)效性。同時(shí),彈幕服務(wù)器按預(yù)設(shè)時(shí)間間隔向直播客戶端發(fā)送房間人數(shù)變化類消息,從而在線人數(shù)的更新頻率可以控制,使用靈活。
本發(fā)明實(shí)施例中用于直播中更新在線人數(shù)的方法,通過彈幕服務(wù)器將房間人數(shù)變化類消息發(fā)送給直播客戶端,便于直播客戶端進(jìn)行直播間當(dāng)前在線人數(shù)的更新,彈幕服務(wù)器進(jìn)行消息推送主動(dòng)控制的方式,便于后臺(tái)人員對(duì)消息推送的頻率進(jìn)行靈活控制;同時(shí),使用兩級(jí)代理,從接收的房間人數(shù)變化類消息中獲取直播間當(dāng)前在線人數(shù)以代理的方式拋給視圖控制器,視圖控制器以代理方式向子界面拋出更新直播客戶端ui的通知,有效的對(duì)事件的分發(fā)做了處理,各自完成各自消息的拋出發(fā)送,事件邏輯處理清晰;子界面接收到更新直播客戶端ui的通知后,即可完成直播間的在線人數(shù)的更新,有效反應(yīng)直播間的當(dāng)前人氣。
本發(fā)明實(shí)施例還公開了一種基于上述用于直播中更新在線人數(shù)的方法的用于直播中更新在線人數(shù)的系統(tǒng),包括:數(shù)據(jù)接收模塊、數(shù)據(jù)傳輸模塊和數(shù)據(jù)更新模塊。
數(shù)據(jù)接收模塊用于接收彈幕服務(wù)器向直播客戶端發(fā)送的直播間當(dāng)前在線人數(shù);數(shù)據(jù)傳輸模塊用于將數(shù)據(jù)接收模塊接收的直播間當(dāng)前在線人數(shù)發(fā)送至ios系統(tǒng)的視圖控制器中,以及控制視圖控制器根據(jù)獲得的直播間當(dāng)前在線人數(shù)向子界面拋出更新直播客戶端ui的通知,且通知的拋出操作在直播客戶端的主線程中進(jìn)行,子界面為直播客戶端ui中顯示在線人數(shù)的視圖界面單元;數(shù)據(jù)更新模塊用于根據(jù)更新直播客戶端ui的通知,進(jìn)行子界面中在線人數(shù)顯示的更新。
更新直播客戶端ui的通知中含有一執(zhí)行代碼,執(zhí)行代碼用于根據(jù)獲取的直播間當(dāng)前在線人數(shù)更新子界面中的在線人數(shù)顯示。彈幕服務(wù)器按預(yù)設(shè)時(shí)間間隔向直播客戶端發(fā)送房間人數(shù)變化類消息。
本發(fā)明實(shí)施例中用于直播中更新在線人數(shù)的系統(tǒng):數(shù)據(jù)接收模塊接收到彈幕服務(wù)器發(fā)送的直播間當(dāng)前在線人數(shù),同時(shí)接收的直播間當(dāng)前在線人數(shù)被拋送給視圖控制器,視圖控制器向子界面拋出更新直播客戶端ui的通知,子界面即可進(jìn)行在線人數(shù)顯示的更新,便于主播或觀眾掌握直播間的當(dāng)前人氣,整個(gè)直播間當(dāng)前在線人數(shù)更新過程邏輯分明,且實(shí)施方便。
本發(fā)明不局限于上述實(shí)施方式,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。