隨筆 - 8  文章 - 55  trackbacks - 0
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          朋友的Blog

          最新評論

          閱讀排行榜

          評論排行榜

          我的聊天室開發(fā)教程(三):和服務(wù)器之間傳遞參數(shù)

          2004年11月30日00:11星期二 [ FMS ]


          在使用FCS原來的組件過程中,默認(rèn)的與服務(wù)器之間傳遞的參數(shù)只有username變量,但是在開發(fā)自己的Flashcom應(yīng)用程序時,經(jīng)常需要向服務(wù)器傳遞更多的參數(shù)。要做到這一點,我們需要修改組件和服務(wù)器端的代碼。
          先舉個簡單的例子。在SimpleConnect組件連接服務(wù)器的時候,是通過call指令呼叫服務(wù)器端的方法。
          如果我們希望客戶端和服務(wù)器之間除了傳遞用戶名之外,還想傳遞用戶編號(便于后臺操作數(shù)據(jù)庫)、用戶性別(用于客戶端顯示性別標(biāo)識)、攝像頭是否可用、麥克風(fēng)是否可用(用于列表顯示狀態(tài))等參數(shù),可以修改服務(wù)器端的simpleconnect.asc文件connect方法,增加相應(yīng)的參數(shù):
          1 : FCSimpleConnect.prototype.connect = function( client, username, userId, userSex,cam,mic) {
          2 : var clocal = this.getClientLocalStorage(client);
          3 : var cglobal = this.getClientGlobalStorage(client);
          4 : cglobal.username = username;
          5 : clocal.id = 'u' + this.getClientID(client);
          6 : this.users_so.setProperty(client.id, { id:userId, name:username, sex:userSex,cam:cam,mic:mic });
          7 : return clocal.id;
          8 : }

          接下來客戶端連接FCSimpleConnect對象的方式就按照服務(wù)器端定義的方法來調(diào)用就可以了,例如:
          1 : this.nc.call(this.prefix + 'connect' , res, this.username, this.UserSex, this.Camera, this.Mic);

          其實這些參數(shù)在simpleconnect.asc中并沒有實際的作用,只是用來說明向服務(wù)器傳遞變量的方法,并且方便以后的擴(kuò)展。如果希望使這些參數(shù)在全局有效,可以注冊服務(wù)器端全局變量。注冊方式類似于:
          1 : cglobal.username = username;

          那么當(dāng)我們需要接受服務(wù)器端的參數(shù)呢,又應(yīng)該如何處理呢?下面通過peoplelist組件來看下客戶端如何實現(xiàn)接受服務(wù)器端的參數(shù)。
          服務(wù)器端people.asc中connect方法代碼為:
          1 : FCPeopleList.prototype.connect = function( client,userSex,cam,mic ) {
          2 : var cglobal = this.getClientGlobalStorage(client);
          3 : var clocal = this.getClientLocalStorage(client);
          4 : clocal.id = 'u' + this.getClientID(client);
          5 : userName=cglobal.username == null ? ' fc_lurker'
          : cglobal.username;
          6 : this.users_so.setProperty(clocal.id, { name:userName, cam:cam,mic:mic,sex:userSex,ip:client.ip });
          7 : }

          在連接peoplelist組件的時候,會呼叫服務(wù)器端的FCPeopleList對象的call方法。
          1 : this.nc.call(this.prefix + 'connect' , null, this.UserSex, this.Camera, this.Mic );

          在同步用戶列表的時候,方法代碼修改為:
          01 : this.so.onSync = function(list) {
          02 : this.owner.people_lb.removeAll();
          03 : var totalUsers = 0;
          04 : var totalLurkers = 0;
          05 : for (var i in this.data) {
          06 : if (this.data[ i ].name == ' fc_lurker'
          ) {
          07 : totalLurkers++;
          08 : } elseif (this.data[ i ].name != null) {
          09 : totalUsers++;
          10 : this.owner.people_lb.addItem(this.data[ i ].name,{ id:i,sex:this.data[ i ].sex,name:this.data[ i ].name,ip:this.data[ i ].ip,cam:this.data[ i ].cam,mic:this.data[ i ].mic });
          11 : }
          12 : }

          這樣,把每個用戶的相關(guān)信息全部記錄在list組件的data屬性中,便于后續(xù)的其它操作。
          另外一個比較實際的應(yīng)用就是在chat組件的使用過程中,需要判斷用戶的身份,和發(fā)送私聊信息的時候需要知道私聊對象的名字,這些都需要擴(kuò)展服務(wù)器參數(shù)。這些地方各位可以仔細(xì)參詳源文件。
          服務(wù)器端相關(guān)的asc文件下載:[
          up/1101744642.rar ]
          PS:如果需要在服務(wù)器端顯示中文,請把服務(wù)器端腳本文件轉(zhuǎn)換為utf8編碼格式。
          posted on 2006-06-08 13:56 blog搬家了--[www.ialway.com/blog] 閱讀(498) 評論(0)  編輯  收藏 所屬分類: FMS
          主站蜘蛛池模板: 衡水市| 清徐县| 宣武区| 桐梓县| 常宁市| 北海市| 宁夏| 永平县| 克拉玛依市| 漳州市| 利津县| 五大连池市| 定陶县| 新建县| 绥棱县| 临猗县| 离岛区| 玉门市| 新丰县| 介休市| 通江县| 文登市| 教育| 汶川县| 政和县| 工布江达县| 新昌县| 呼图壁县| 烟台市| 易门县| 本溪| 沁阳市| 乐业县| 舟曲县| 乌鲁木齐县| 舞钢市| 沂水县| 鹤壁市| 临安市| 农安县| 泰宁县|