`
836811384
  • 浏览: 548967 次
文章分类
社区版块
存档分类
最新评论

SmartFoxServer一些资料的整理

 
阅读更多

最近公司在做一款网游

本来准备拿原本falsh的实现的那个服务器来用

可是发现 SmartFoxServer 2.x 和Android sdk 2.2+才好匹配,搞了一两天,找到原因所在

Android随着版本的升级,加了一些类库,而这些类在低版本中没有

造成了不兼容

由于本来flash是1.66的SmartFoxServer,测试了只有Android2.3才能正确获得连接,2.3的市场太小

在官网上查了很多,2.x服务器要大概6w一个吧,搞个网游的话成本显得有些高了

而且关于Android的例子9月份发出的,还不是很成熟,基本没有成熟的产品出现,主流是Flash的,不过用这个搞flash的多人游戏还是不错的选择

小小的遗憾吧,后面我们自己写服务器了。

不过这两天找到一些关于SmartFoxServer的资料,拿来分享一下

关于这方面国内的资料还是比较少,找到一个应该是专门搞这个的大哥,这是他的博客:http://asfox.blogbus.com/c1617676/

SmartFoxServer是专门为AdobeFlash设计的跨平台socket服务器,让开发者高效地开发多人应用及游戏.该服务器主要用来创建多玩家游戏。并提供强大的制作工具,各种回合制游戏和实时游戏都可以胜任。SmartFoxServer支持的播放器从Flashplayer6版到最新的FlashPlayer9,并提供丰富的Actionscript1.0,2.0and3.0APIs,同时也支持FlexBuilder2and3.该产品带有详细的帮助文档,大约35个带源代码的示例还有强大的远程管理工具.本入门假定你会基本的flex3开发知识。

SFS简介快速可靠:

SmartFoxServer是基于高效和可升级的结构,可以在单CPU服务器机子上处理数千的客户端.是有名的平民的服务器,最低支持P2-350Mhz。很多公司和游戏机构都已经使用SmartFoxServer开发出了很多高质量的在线多玩家应用及游戏。比如ClubPenguin

高制作能力:

SmartFoxServer带有一套支持Actionscript1.0,2.0Actionscript3.0APIs他们都是从flash核心对象扩展出来的新功能,可以让开发者简单快速地开发多玩家应用.

扩展性:

SmartFoxServer可以使用Actionscript,Javascript,PythonandJava进行服务器端的扩展.自定义服务器端扩展,可以执行复杂的应用,游戏逻辑,高级用户,房间管理,及服务器新行为,等等另外。

跨平台性:

SmartFoxServer可以运行在任何系统上:因为SmartFoxServer100%的纯Java开发的应用,它可以运行在任何平台上,如:Windows(NT/2K/XP/2003),Linux,MacOSX(10.4orhigher),Solaris等等.

强大的附加软件:

SmartFoxServer带有强大的附加软件来扩展其功能:

BlueBox:

让玩家避开网络限制(防火墙,代理)来进行多玩家游戏,而不牺牲连接速度.因为API会自动在幕后选择最好的连接系统。

RedBox:

免费开源的附加软件,使在SmartFoxServer的框架中集成了音频/视频流的能力(red5,并简化了A/V应用的开发难度。

什么是SFS客户端的API

Sfs已经为你做好了基本的客户端网络通信通道,这个通道可以联通服务端的相关功能模块来实现相关功能。比如用户登录/房间登陆/用户信息广播/更新用户房间信息等等。你只调用和扩展通道中的指定方法即可。

如何安装?

www.smartfoxserver.com中找到最新版本的smartfoxserverpro1.6.2)。然后安装找到RedBoxClient_AS3.SWCflex3中导入此客户端插件。当然也可以将flashapi中的AS3中源文件直接拷到自己的项目中。这样就可以调用SFS的客户端的API了。

基本步凑

发起socket连接:这是第一步.就像是在敲服务器的门。如果服务器开着就会相应你,并激活一个连接。

登入:在这一阶段,你要告诉服务器你是谁你想和哪个应用交互,如果操作成功的话,你就可以当前zone里的房间列表

加入房间:一旦进入了房间,你就可以和其他用户和应用的逻辑进行交互。

SmartFoxClient详细介绍

安装:

flex3中导入项目Examples/as3/smartfoxchat

smartfoxchat.mxml是其客户端的主文件。

重要常量信息:

//Connectionconstants

privateconstserverIp:String=211.157.41.204

privateconstserverPort:int=9339

privateconstserverZone:String=simpleChat

以上都是连接的重要信息,第一个是serverip是你的服务器的IP地址;第二个子是端口号,第三个是Zone名称(zone是服务端对于相关集成的功能模块的单位代称);

常用事件:

package{

importflash.display.Sprite;

//Establishconnectionwiththeserver

publicfunctionconnect():void

{

sfs.connect(serverIp,serverPort)

}

以上是连接服务端的方法,只要知道IP和端口号我们就可以对SFS服务器进行联接了。

sfs=newSmartFoxClient(true)

sfs.debug=false;

//Addeventlisteners

sfs.addEventListener(SFSEvent.onConnection,onConnection)

以上代码是生成一个客户端SFS通道实例。然后监听联连,一旦客户端与服务联通后客户端就可以收到onConnection的这个事件信息。

sfs.addEventListener(SFSEvent.onLogin,onLogin)

Sfs的事件监听基本上是按smartfoxchat.mxml的顺序在走的,onconnetion之后就会会监听到onlogin,这个事件的用处只在于失败登录后客户端会在debug里看到自定义的一段错误信息。

sfs.addEventListener(SFSEvent.onRoomListUpdate,onRoomListUpdate)

登录成功后第一件是收到一个房间列表,客户端的相关list控件通常会绑定这个列表信息这样就可以显示了。要注意的是这里最后有一个sfs.autoJoin(),如果执行将会自动的进行一个房间如果不执行登录程序将到此结束。

sfs.addEventListener(SFSEvent.onJoinRoom,onJoinRoom)

当客户端执行了sfs.joinRoom(roomId),服务端将会派发onJoinRoom事件客户端,客户端再执行onJoinRoom

常用实例方法:

代码

sendObject(obj:Object,roomId:int=-1):void                 //在当前房间发送一个Actionscript对象给其他用户。

setUserVariables(varObj:Object,roomId:int=-1):void//设置一个或多个用户变量。

sendPublicMessage(message:String,roomId:int=-1):void//发送一个公有消息。

sendPrivateMessage(message:String,recipientId:int,roomId:int=-1):void//发送一个私有消息给用户。

joinRoom(newRoom:*,pword:String=“”,isSpectator:Boolean=false,dontLeave:Boolean=false,oldRoom:int=-1):void//加入一个房间。

leaveRoom(roomId:int):void//离开一个特定的房间。(断开一个特定房间的连接)。

C:\ProgramFiles\SmartFoxServerPRO_1.6.2\Docs\index.htm

这是SFS的文档主界面,里面有全部的所有SFS的相关资料及所有类的及方法属性的介绍。

市面上其实还有与SFS同类的相关产品,比如adobeFMSflashmedioserver)流媒体服务器可以高效的处理flash流媒体服务(专门针对视音频流不是专门针对游戏)。Javaminajava的可用于多人实时的服务器。sungameserver(sgs)http://www.projectdarkstar.com/。还有python中的twisted框架也可以实现较简单的服务器。

以上说的服务器都是指可以多人实时大部分都支持socketfms除外

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics