SmartFoxServer一些资料的整理

时间:2022-05-11 18:54:10

最近公司在做一款网游

本来准备拿原本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 是专门为Adobe Flash设计的跨平台socket服务器,让开发者高效地开发多人应用及游戏该服务器主要用来创建多玩家游戏。并提供强大的制作工具,各种回合制游戏和实时游戏都可以胜任。 SmartFoxServer 支持的播放器从Flash player6版到最新的Flash Player 9,并提供丰富的Actionscript 1.0, 2.0 and 3.0 APIs,同时也支持 Flex Builder 2 and 3. 该产品带有详细的帮助文档大约 35 个带源代码的示例 还有强大的远程管理工具本入门假定你会基本的flex3开发知识。

SFS简介快速 可靠:

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

高制作能力:

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

扩展性:

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

跨平台性:

SmartFoxServer 可以运行在任何系统上因为SmartFoxServer 100%的纯 Java 开发的应用,它可以运行在任何平台上,如:Windows (NT/2K/XP/2003), Linux, MacOS X (10.4 or higher), 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是其客户端的主文件。

重要常量信息:

// Connection constants

private const serverIp:String = 211.157.41.204

private const serverPort:int = 9339

private const serverZone:String = simpleChat 

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

常用事件:

package {

import flash.display.Sprite;

//Establish connection with the server

public function connect():void

{

sfs.connect(serverIp, serverPort)

}

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

sfs = new SmartFoxClient(true)

sfs.debug = false;

// Add event listeners

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:\Program Files\SmartFoxServerPRO_1.6.2\Docs\index.htm

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

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

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