fcs遠(yuǎn)程共享對(duì)象SharedObject的用法_第1頁(yè)
fcs遠(yuǎn)程共享對(duì)象SharedObject的用法_第2頁(yè)
fcs遠(yuǎn)程共享對(duì)象SharedObject的用法_第3頁(yè)
fcs遠(yuǎn)程共享對(duì)象SharedObject的用法_第4頁(yè)
fcs遠(yuǎn)程共享對(duì)象SharedObject的用法_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、· 在FCS的應(yīng)用上常會(huì)需要讓Client與Server間的數(shù)據(jù)傳遞與method呼叫,以下幾點(diǎn)概念應(yīng)該可以 避免呼叫method沒反應(yīng)或數(shù)據(jù)沒傳到你要的地方等狀況發(fā)生。一.Server端method如何被呼叫Server端上能定義在Client對(duì)象上的function,用prototype方式去extend原本Client類別的method,讓Client類別所產(chǎn)生的instance都擁有該method。例:Ctotype.newfun=function()你也可以把這function定義在單一Client instance下,例:application.onCo

2、nnect(newClient)=function().newClient.newfun=function()二.Client端的method如何被呼叫在Client端上要讓Server端可以呼叫的function,一定要定義在Netconnection上。例:nc=new NetConnection();.nc.myfun=function()三.send或call這兩個(gè)method在使用上有何差異?如何使用call:這method在Client端上可使用的是netconnection對(duì)象,在Server端上可使用的是netconnection與Client物件1.在Client端利用net

3、connection.call來(lái)觸發(fā)執(zhí)行Server端上Client 對(duì)象的method。2.在Server端上利用Client對(duì)象.call來(lái)觸發(fā)Client端上netconnection上的method。3.在Server端上使用netconnection.call時(shí),這時(shí)這server的角色就像一個(gè)client端一樣,是在觸發(fā)另一個(gè)Server端上Client 物件的method。send:在Client端上可使用SharedObject與netStream包含的methodsend這個(gè)method很有趣,他讓你由client端去啟動(dòng)所有同在client端的function,但因?yàn)樵谟|發(fā)

4、function時(shí)可以帶參數(shù)過去,這個(gè)特性是可以讓你利用來(lái)做小量數(shù)據(jù)的廣播的,要廣播給所有人接收到的數(shù)據(jù),并不一定就要放在SharedObject內(nèi)(再利用其onSync來(lái)做同步),有時(shí)用send也是一個(gè)簡(jiǎn)單做法。1.在netStream或SharedObject上定義好method "myfun"2.利用netStream.send("myfun")或sharedobject.send("myfun",myvar)可讓所有client上的so內(nèi)部申明的"myfun"函數(shù)被觸發(fā)四.幾種可能的互動(dòng)型態(tài)范例1.Clie

5、nt端對(duì)Server端傳送data或呼叫執(zhí)行Server端function應(yīng)用范例:一個(gè)簡(jiǎn)易聊天室,聊天內(nèi)容只存在Server端的變量?jī)?nèi),不使用SharedObject存放,呼叫Server端的message這method來(lái)處理client傳上去的msg這對(duì)話內(nèi)容Client端:nc.call("message", null, msg);Server端:application.onAppstart=function()application.chat_content=""application.onConnect=function(newClient).

6、事件中定義客戶端函數(shù)newClient.message=function(msg)application.chat_content+=msg; 2.Client端對(duì)所有Client廣播data,各 client都會(huì)執(zhí)行指定的本地化function應(yīng)用范例:以之前在站上回復(fù)過的問題為例,一個(gè)clinet要輸入一個(gè)網(wǎng)址url_txt,要讓所有的client都會(huì)開啟這網(wǎng)址的網(wǎng)頁(yè)Client端:先定義一個(gè)附掛在so上的methodlobby_so.openPage=function(receive_url) getURL(receive_url);利用send就可讓所有client接收到這網(wǎng)址并開啟l

7、obby_so.send("openPage",url_txt); 3.Server傳送data給特定Client應(yīng)用范例:當(dāng)有使用者聯(lián)機(jī)上server,當(dāng)使用者數(shù)據(jù)驗(yàn)證正確時(shí),接受其聯(lián)機(jī),一方面要client去執(zhí)行指定的function跳到某頁(yè)或讓某mc出現(xiàn).,同時(shí)又要把server端的數(shù)據(jù)帶過去,說(shuō)明:server只響應(yīng)正在與server做互動(dòng)的那個(gè)client,如以上范例,server只會(huì)去觸發(fā)請(qǐng)求,聯(lián)機(jī)的該client去執(zhí)行指定的function,其它c(diǎn)lient不會(huì)有反應(yīng)Server端: application.onConnect=function(newClie

8、nt,pwd)if(pwd="ok")application.acceptConnection(newClient);newClient.call("get_message",null,message); elseapplication.rejectConnection(newClient,errObj); Client端:.nc.get_message=function(message); 4.Server廣播data給所有Client應(yīng)用范例:當(dāng)有人斷線時(shí),由server端廣播所有client,讓所有client都能同步更新client名單說(shuō)明:以上

9、范例來(lái)說(shuō),當(dāng)clinet無(wú)預(yù)警的斷線,只有Server上的application.onDisconnect 這handler會(huì)被觸發(fā),也就是說(shuō)你需要在這handler內(nèi)寫一些程序去廣播通知給所有的client。如何廣播?有以下兩種做法1.把數(shù)據(jù)放在remote SharedObject對(duì)象內(nèi),只要SO對(duì)象內(nèi)容更動(dòng),即自動(dòng)觸發(fā)Client端的so.onSync。將在線人員名單寫在remote SharedObject對(duì)象內(nèi),當(dāng)有人斷線,只要把so內(nèi)該筆數(shù)據(jù)剔除掉,因?yàn)閟o內(nèi)容改變,因此所有Client端的so.onSync 這handler將被觸發(fā),即可達(dá)到你要更新數(shù)據(jù)的目的。Server端ap

10、plication.onDisconnect=function(newClient)userlist_so.setProperty(newC,"");注:相對(duì)的當(dāng)server端無(wú)預(yù)警的斷線,client端可由nc.onStatus這handler內(nèi)由判斷info.code來(lái)取得信息2.當(dāng)數(shù)據(jù)不是存在so內(nèi)時(shí),只是存在server端的一個(gè)變量上,可以善加利用application.clients來(lái)對(duì)所有client廣播。以下會(huì)觸發(fā)所有client端上的client_fun,并把server上的sendvar變量帶過去server端:application.

11、onDisconnect=function(newClient)for(var i=0;i<application.clients.length;i+) application.clientsi.call("client_fun",null,sendvar); Client端:nc.client_fun=function(myvar) 增加一個(gè)廣播的方法Server 端傳送給有g(shù)etRemote 同一個(gè)ShareObject 的Client 端Server 端:application.abc_so = SharedObject.get("abc_so", false);applicat

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論