用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   有意向写收费精品教程的朋友,请联系本站合作
当前位置 :首页>flash教程>Fms教程>列表

Flash Media Server 起步(8)client与server交互进阶

[来源:N神研究所 | 作者:N神 | 时间:2008-04-04 | 点击:  | 收藏本文  【 】]

Server端與Client端method觸發與data廣播概念 by ozzysun

在FCS的應用上常會需要讓Client與Server間的資料傳遞與method呼叫,以下幾點概念應該可以
避免呼叫method沒反應或資料沒傳到你要的地方等狀況發生。

一.Server端method如何被呼叫

Server端上要能讓Client所呼叫觸發的function,需定義在Server端的Client物件上你可以用
prototype方式去extend原本Client類別的method,讓Client類別所產生的instance都擁有該
method。
例:
Client.prototype.newfun=function(){}

你也可以把這function定義在單一Client instance下,
例:
application.onConnect(newClient)=function(){
.....
newClient.newfun=function(){}
}
二.Client端的method如何被呼叫

在Client端上要讓Server端可以呼叫的function,一定要定義在Netconnection上。
例:
nc=new NetConnection();
.....
nc.myfun=function(){}

三.send或call這兩個method在使用上有何差異? 如何使用

call:這method在Client端上可使用的是netconnection物件,在Server端上可使用的是
netconnection與Client物件
1.在Client端利用netconnection.call來觸發執行Server端上Client 物件的method。
2.在Server端上利用Client物件.call來觸發Client端上netconnection上的method。
3.在Server端上使用netconnection.call時,這時這server的角色就像一個client端一樣
,是在觸發另一個Server端上Client 物件的method。
send:在Client端上可使用這method的包含SharedObject與netStream
send這個method很有趣,他讓你由client端去啟動所有同在client端的function,但因為
在觸發function時可以帶參數過去,這個特性是可以讓你利用來做小量資料的廣播的,要
廣播給所有人接收到的資料,並不一定就要放在SharedObject內,利用其onSync來做同步
,有時用send也是一個很簡單的做法,如何定義
1.在netStream或SharedObject上定義好method "myfun"
2.利用netStream.send("myfun")或sharedobject.send("myfun",myvar)可讓所有client
上的"myfun"都會被觸發

四.幾種可能的互動型態範例

1.Client端對Server端傳送data或呼叫執行Server端function
應用範例:一個簡易聊天室,聊天內容只存在Server端的變數內,不使用SharedObject存放呼
叫Server端的message這method來處理client傳上去的msg這對話內容
Client端:
nc.call("message", null, msg);
Server端:
application.onAppstart=function(){
application.chat_content="";
}
application.onConnect=function(newClient){
.......
newClient.message=function(msg){
application.chat_content+=msg;
}
}
2.Client端對所有Client廣播data並執行指定Client端function
應用範例:以之前在站上回覆過的問題為例,一個clinet要輸入一個網址url_txt,要讓所有的
client都會開啟這網址的網頁
Client端:
先定義一個附掛在so上的method
lobby_so.openPage=function(receive_url){
getURL(receive_url);
}
利用send就可讓所有client接收到這網址並開啟
lobby_so.send("openPage",url_txt);

3.Server傳送data給特定Client
應用範例:當有使用者連線上server,當使用者資料驗證正確時,接受其連線,一方面要client
去執行指定的function跳到某頁或讓某mc出現...,同時又要把server端的資料帶過去
說明:server只回應正在與server做互動的那個client,如以上範例,server只會去觸發請求
連線的該client去執行指定的function,其他client不會有反應

Server端:
application.onConnect=function(newClient,pwd){
if(pwd=="ok"){
application.acceptConnection(newClient);
newClient.call("get_message",null,message);
}else{
application.rejectConnection(newClient,errObj);
}
}
Client端:
........
nc.get_message=function(message){};

4.Server廣播data給所有Client
應用範例:當有人斷線時,由server端廣播所有client,讓所有client都能同步更新client名單
說明:以上範例來說,當clinet無預警的斷線,只有Server上的application.onDisconnect 這handler
會被觸發,也就是說你需要在這handler內寫一些程式去廣播通知給所有的client。
如何廣播?有以下兩種做法
1.把資料放在remote SharedObject物件內,只要SO物件內容更動,即自動觸發Client端的so.onSync
將線上人員名單寫在remote SharedObject物件內,當有人斷線,只要把so內該筆資料剔除掉,因為
so內容改變,因此所有Client端的so.onSync 這handler將被觸發,即可達到你要更新資料的目的。

上一页12 下一页
文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:Flash Media Server 起步(7)与server端交互
下一篇:Flash Media Server 起步(9)在线列表
Tags:     交互 起步 Client function Server client method 所有
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  教程分类
  基础操作   动画特效
  应用开发   组件学习
  As程序   动画教程
  Flash cs3   AS 3.0
  FCS/FMS教程   Loading教程
  Flash与Web   Flash教程连载
  相关文章
·FMS在线客服系统(客户端篇)
·FMS在线客服系统(fms脚本)
·FMS在线客服系统(分析篇)
·分布式的Flash Media Server: Gr
·基于SharedObject 3*3数组 做的M
·用flex做的 多服务器 im 及 源码
·基于SharedObject做的房间列表和
·fms 2.0A星寻路
·FMS音频延迟分析
·fms中介函数
  热门文章
·Flash进度条的制作详细讲解(组图)
·flash幻灯片网页效果
·Flex 3 AdvancedDataGrid的使用(第二
·全Flash动画网站实现的基础教学
·flash水影效果字
·Flash打造简单的飘雪动画视觉特效
·FLASH+XML相册(附源码)
·超酷flash光晕移动效果
·Flash旋转拖尾文字效果的制作教程
·Flash制作大雪纷飞效果动画
·flash春雷闪电效果
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号