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 中找到最新版本的smartfoxserverpro(1.6.2)。然后安裝找到RedBoxClient_AS3.SWC在flex3中導入此客戶端插件。當然也可以將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同類的相關產品,比如adobe的FMS(flash medio server)流媒體服務器可以高效的處理flash流媒體服務(專門針對視音頻流不是專門針對游戲)。Java的mina,java的可用于多人實時的服務器。sun game server(sgs)http://www.projectdarkstar.com/。還有python中的twisted框架也可以實現較簡單的服務器。
以上說的服務器都是指可以多人實時大部分都支持socket,fms除外