智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...

导航

Smartfoxserver 基础入门

Posted on 2009-12-04 11:36  Bill Yuan  阅读(3967)  评论(0编辑  收藏  举报

  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除外。