分布式的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经验分享