• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>FMS>文章内容
  • 分布式的FMS:GridFlash及应用实例
  • 来源:闪客居个人空间 作者:changhao 2008-08-21 【


分布式的Flash Media Server: GridFlash 及其应用实例

支持rtmp协议:flash.net.NetConnection,flash.net.NetStream,flash.net.SharedObject

支持amf0 amf3 flv h264

支持链接到不同服务器的flash客户端可以互相查询和通信

支持分布式的NetStream和SharedObject

支持通过连接到一个SharedObject可以监控多个不同服务器中的SharedObject

可以作为插件嵌入到 ie ff zinc

目前还  < 不支持 > 服务器端编程 ( 根据反馈会考虑加入服务器端 lua 编程 )

gridflash 的介绍  http://www.gridflash.com/html/en/overview.ppt


应用实例:(以下例子做的不完善,仅仅为了说明使用GridFlash可以很容易开发分布式flash应用)

注意以下例子使用了  appName="app1"  appPass="app1" 这个应用, 使用了 "idc1" "idc2" 两个命名和一个匿名的gridflashserver

你可以修改以下例子的源码 使用自己创建的应用并链接到自己部署的gridflashserver



【一】  用flex做的 多服务器 im 及 flex源码
用GridFlash做多个server 客户端可以链接到任何一个server
flex源码          http://www.gridflash.com/file/GFDemoIM.zip
运行:             http://www.gridflash.com/GFDemoIM/GFDemoIM.html
支持 1对1(用flash remoting)  和   多对多(用shared object)
使用步骤:
开两个以上  http://www.gridflash.com/GFDemoIM/GFDemoIM.html
1 用不同的用户名登录 ( 注册 和 登录 的动作差不多 比如你用 user/pass 点击 reg and login 同时完成注册和登录  )
2 选择一个服务器 点击 connect to im server
3 查找别的client(相当于查找好友),比如我用a 登录 查找 b,c
4 左边好友列表里面双击可以1对1聊天
5 new multi session 创建多人会话,只有创建者可以把别的client加进来,多选左边好友,右下角的addToMultiSession添加



【二】 基于SharedObject做的房间列表和房间及flex源码

用GridFlash做多个server 客户端可以链接到任何一个server
flex源码         http://www.gridflash.com/file/GFDemoRoomList.zip
运行:           http://www.gridflash.com/GFDemoRoomList/GFDemoRoomList.html

1 先登录或同时注册登录

2 选择一个服务器 链接

3 双击右边的房间可以打开一个房间(closeRoom关闭房间)

右边有房间列表和房间
     有聊天房间   相当于聊天室
     小球控制房间 双击黄色小球后 用键盘的方向键控制移动

实现说明:
使用monitor sharedobject (name pattern "mul/soname" )表示房间列表

用普通sharedobject  (name pattern "gfs/servername/soname" ) 表示房间

monitor sharedobject可以监控多个不同服务器上普通sharedobject的部分属性
至于监控什么样的属性 通过 属性名字的前缀 告诉 monitor sharedobject 

但是monitor sharedobject属性名字是***@***格式,前面部分表示属性名字,后半部分表示被监控sharedobject的名字
所以sharedobject属性名字中不要使用"@"字符

比如
monitor=SharedObject.getRemote("mul/myroomlist",conn.uri);
监控哪些 sharedobject 可以通过两种方式指定
链接时
monitor.connect(conn,"list=server1%_%chat0%chat1,server2%M%ball0%ball1");
表示要监控 gfs/server1/chat0 和 gfs/server1/chat1中以"_"开头的属性
         gfs/server2/ball0 和 gfs/server2/ball1中以"M"开头的属性
链接后
monitor.send("addSo","home1%_%chat2,home2%M%ball2");




【三】基于SharedObject 3*3数组 做的MMO(大型多人在线) demo 及flex源码
实现思想:
MMO=大型静态场景 + 多人在这个场景中的动态活动
sharedobject相当于许多部署在这个大型场景中的多个传感器

flash客户端维护一个3*3的sharedobject矩阵,随着角色的移动关闭远离的sharedobject,打开靠近的sharedobject
而角色本身始终处于中心位置的sharedobject  注意:不是指so[1][1], 而是由 soi 和 soj动态变化跟踪
除了这9个动态关闭打开的sharedobject外,flash客户端还要有一个roles=new Object(),roles用来保存从这些传感器得到
其他在线用户

so[3][3]  soi,soj表示当前角色所在so
[topLeft]       [top]        [topRight]
[left]          [center]     [right]
[downLeft]      [down]       [downRight]
topLeft:  so[(soi+2)%3][(soj+2)%3]
top:      so[(soi+2)%3][(soj+0)%3]
topRight: so[(soi+2)%3][(soj+1)%3]
left:     so[(soi+0)%3][(soj+2)%3]
center:   so[(soi+0)%3][(soj+0)%3]
right:    so[(soi+0)%3][(soj+1)%3]
downLeft: so[(soi+1)%3][(soj+2)%3]
down:     so[(soi+1)%3][(soj+0)%3]
downRight:so[(soi+1)%3][(soj+1)%3]


用GridFlash做多个server 客户端可以链接到任何一个server
gridflash 的介绍http://www.gridflash.com/html/en/overview.ppt
flex源码         http://www.gridflash.com/file/GFDemoMMO.zip
运行:           http://www.gridflash.com/GFDemoMMO/GFDemoMMO.html


1 先登录或同时注册登录

2 选择一个服务器 链接

3 在有黄色小球的tab面板中,双击面板的白色部分,然后用键盘方向键可以移动小球的位置
  打开多个http://www.gridflash.com/GFDemoMMO/GFDemoMMO.html 用不同的用户登录
  移动到接近的位置就可以看到其他小球
  注意黄色小球始终处于中心位置不动,只能看到相对于其他小球的移动

GridFlash是一个分布式的Flash Media Server
实现MMO可以按如下部署
m个 master服务器  master服务器使用不同的名字  用来分布存放不同的sharedobject
n个 slave 服务器  slave服务器用来做边缘链接服务器服务器
flash可以连接到任意的slave服务器

商业合作可以联系: changhaohao@gmail.com



上一篇:Flash Media Server 3.0.2更新   下一篇:Flash Media Server经验分享
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)