1.序言:如果您对FMS 2以及后续产品的服务器端脚本开发一无所知,请忽略此文。
如果您对Red5以及后续产品的服务器端Java开发一无所知,请忽略此文。
2. 正文:FMS中的Server Side Sharedobject(SO for short) 可以引发客户端连接上的SO的SyncHandler.
Red5中也有同样的功能,但是需要注意如下几点方能成功使用:
2.1 服务器端的SharedObject的创建必须在roomStart里,且不需要persist 也就是psersist = false。
2.2 客户端连接时最好是连接到一个特定的room而不是service的root。
2.3 给Application注册一个ISharedObjectSecurity 并且手动实现里面的接口isCreationAllowed
示范代码如下:
if ("userlist".equals(name))
{
// get the SO creation service. Basically the following lines are exactly
// what MultiThreadedApplicationAdapter does. You can also pass a reference
// to your Application to this SecurityHandler and use it instead
ISharedObjectService service = (ISharedObjectService) getScopeService(
scope,
ISharedObjectService.class,
SharedObjectService.class,
false
);
if( service.createSharedObject(scope, name, persistent) == true )
{
ISharedObject so = service.getSharedObject(scope, name);
ISharedObjectListener listener = new SharedObjectListener();
so.addSharedObjectListener(listener);
}
}
return true;
大意就是如果某个特定名称的SO不存在了,则立刻创建它。
2.4 flash里的as3连接的时候,也需要用非persist方式
e.g : SharedObject.getRemote("userlist",nc.uri,false);
按照这四点来操作,SharedObject的OnSync或者SyncHandler就可以如愿生效了。
P.S: Red5版本 0.8 rc2
请各位Red5的开发者不要被oflademo误导。
另E文比较好的,可以在这里看原理。