Smartfoxserver
SmartFoxServer 是專門(mén)為Adobe Flash設(shè)計(jì)的跨平臺(tái)socket服務(wù)器,讓開(kāi)發(fā)者高效地開(kāi)發(fā)多人應(yīng)用及游戲. 該服務(wù)器主要用來(lái)創(chuàng)建多玩家游戲。并提供強(qiáng)大的制作工具,各種回合制游戲和實(shí)時(shí)游戲都可以勝任。 SmartFoxServer 支持的播放器從Flash player6版到最新的Flash Player 9,并提供豐富的Actionscript 1.0, 2.0 and 3.0 APIs,同時(shí)也支持 Flex Builder 2 and 3. 該產(chǎn)品帶有詳細(xì)的幫助文檔, 大約 35 個(gè)帶源代碼的示例 還有強(qiáng)大的遠(yuǎn)程管理工具. 本入門(mén)假定你會(huì)基本的flex3開(kāi)發(fā)知識(shí)。
SFS簡(jiǎn)介快速 可靠:
SmartFoxServer 是基于高效和可升級(jí)的結(jié)構(gòu),可以在單CPU服務(wù)器機(jī)子上處理數(shù)千的客戶端. 是有名的平民的服務(wù)器,最低支持P2-350Mhz。很多公司和游戲機(jī)構(gòu)都已經(jīng)使用 SmartFoxServer 開(kāi)發(fā)出了很多高質(zhì)量的在線多玩家應(yīng)用及游戲。比如Club Penguin
高制作能力:
SmartFoxServer 帶有一套支持Actionscript 1.0, 2.0 和 Actionscript 3.0 的APIs 他們都是從flash核心對(duì)象擴(kuò)展出來(lái)的新功能,可以讓開(kāi)發(fā)者簡(jiǎn)單快速地開(kāi)發(fā)多玩家應(yīng)用.
擴(kuò)展性:
SmartFoxServer 可以使用Actionscript, Javascript, Python and Java進(jìn)行服務(wù)器端的擴(kuò)展. 自定義服務(wù)器端擴(kuò)展,可以執(zhí)行復(fù)雜的應(yīng)用,游戲邏輯,高級(jí)用戶,房間管理,及服務(wù)器新行為,等等 另外。
跨平臺(tái)性:
SmartFoxServer 可以運(yùn)行在任何系統(tǒng)上: 因?yàn)镾martFoxServer 是100%的純 Java 開(kāi)發(fā)的應(yīng)用,它可以運(yùn)行在任何平臺(tái)上,如:Windows (NT/2K/XP/2003), Linux, MacOS X (10.4 or higher), Solaris 等等.
強(qiáng)大的附加軟件:
SmartFoxServer 帶有強(qiáng)大的附加軟件來(lái)擴(kuò)展其功能:
BlueBox:
讓玩家避開(kāi)網(wǎng)絡(luò)限制(防火墻, 代理) 來(lái)進(jìn)行多玩家游戲,而不犧牲連接速度. 因?yàn)?API 會(huì)自動(dòng)在”幕后“選擇最好的連接系統(tǒng)。
RedBox:
免費(fèi)開(kāi)源的附加軟件,使在SmartFoxServer的框架中集成了音頻/視頻流的能力(red5), 并簡(jiǎn)化了 A/V應(yīng)用的開(kāi)發(fā)難度。
什么是SFS客戶端的API?
Sfs已經(jīng)為你做好了基本的客戶端網(wǎng)絡(luò)通信通道,這個(gè)通道可以聯(lián)通服務(wù)端的相關(guān)功能模塊來(lái)實(shí)現(xiàn)相關(guān)功能。比如用戶登錄/房間登陸/用戶信息廣播/更新用戶房間信息等等。你只調(diào)用和擴(kuò)展通道中的指定方法即可。
如何安裝?
從www.smartfoxserver.com 中找到最新版本的smartfoxserverpro(1.6.2)。然后安裝找到RedBoxClient_AS3.SWC在flex3中導(dǎo)入此客戶端插件。當(dāng)然也可以將flashapi中的AS3中源文件直接拷到自己的項(xiàng)目中。這樣就可以調(diào)用SFS的客戶端的API了。
基本步湊
發(fā)起socket連接:這是第一步. 就像是在敲服務(wù)器的門(mén)。如果服務(wù)器開(kāi)著就會(huì)相應(yīng)你,并激活一個(gè)連接。
登入: 在這一階段,你要告訴服務(wù)器你是誰(shuí)你想和哪個(gè)應(yīng)用交互,如果操作成功的話,你就可以當(dāng)前zone里的房間列表
加入房間: 一旦進(jìn)入了房間,你就可以和其他用戶和應(yīng)用的邏輯進(jìn)行交互。
SmartFoxClient 詳細(xì)介紹
安裝:
在flex3中導(dǎo)入項(xiàng)目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 ”
以上都是連接的重要信息,第一個(gè)是serverip是你的服務(wù)器的IP地址;第二個(gè)子是端口號(hào),第三個(gè)是Zone名稱(zone是服務(wù)端對(duì)于相關(guān)集成的功能模塊的單位代稱);
常用事件:
package …{
import flash.display.Sprite;
//Establish connection with the server
public function connect():void
{
sfs.connect(serverIp, serverPort)
}
以上是連接服務(wù)端的方法,只要知道IP和端口號(hào)我們就可以對(duì)SFS服務(wù)器進(jìn)行聯(lián)接了。
sfs = new SmartFoxClient(true)
sfs.debug = false;
// Add event listeners
sfs.addEventListener(SFSEvent.onConnection, onConnection)
以上代碼是生成一個(gè)客戶端SFS通道實(shí)例。然后監(jiān)聽(tīng)聯(lián)連,一旦客戶端與服務(wù)聯(lián)通后客戶端就可以收到onConnection的這個(gè)事件信息。
sfs.addEventListener(SFSEvent.onLogin, onLogin)
Sfs的事件監(jiān)聽(tīng)基本上是按smartfoxchat.mxml的順序在走的,onconnetion之后就會(huì)會(huì)監(jiān)聽(tīng)到onlogin,這個(gè)事件的用處只在于失敗登錄后客戶端會(huì)在debug里看到自定義的一段錯(cuò)誤信息。
sfs.addEventListener(SFSEvent.onRoomListUpdate, onRoomListUpdate)
登錄成功后第一件是收到一個(gè)房間列表,客戶端的相關(guān)list控件通常會(huì)綁定這個(gè)列表信息這樣就可以顯示了。要注意的是這里最后有一個(gè)sfs.autoJoin(),如果執(zhí)行將會(huì)自動(dòng)的進(jìn)行一個(gè)房間如果不執(zhí)行登錄程序?qū)⒌酱私Y(jié)束。
sfs.addEventListener(SFSEvent.onJoinRoom, onJoinRoom)
當(dāng)客戶端執(zhí)行了sfs.joinRoom(roomId),服務(wù)端將會(huì)派發(fā)onJoinRoom事件客戶端,客戶端再執(zhí)行onJoinRoom。
常用實(shí)例方法:
代碼
sendObject (obj:Object, roomId:int = -1) : void //在當(dāng)前房間發(fā)送一個(gè)Actionscript對(duì)象給其他用戶。
setUserVariables (varObj:Object, roomId:int = -1) : void //設(shè)置一個(gè)或多個(gè)用戶變量。
sendPublicMessage (message:String, roomId:int = -1) : void //發(fā)送一個(gè)公有消息。
sendPrivateMessage (message:String, recipientId:int, roomId:int = -1) : void //發(fā)送一個(gè)私有消息給用戶。
joinRoom (newRoom:*, pword:String = “”, isSpectator:Boolean = false, dontLeave:Boolean = false, oldRoom:int = -1) : void //加入一個(gè)房間。
leaveRoom (roomId:int) : void //離開(kāi)一個(gè)特定的房間。(斷開(kāi)一個(gè)特定房間的連接)。
C:\Program Files\SmartFoxServerPRO_1.6.2\Docs\index.htm
這是SFS的文檔主界面,里面有全部的所有SFS的相關(guān)資料及所有類的及方法屬性的介紹。
市面上其實(shí)還有與SFS同類的相關(guān)產(chǎn)品,比如adobe的FMS(flash medio server)流媒體服務(wù)器可以高效的處理flash流媒體服務(wù)(專門(mén)針對(duì)視音頻流不是專門(mén)針對(duì)游戲)。Java的mina,java的可用于多人實(shí)時(shí)的服務(wù)器。sun game server(sgs)http://www.projectdarkstar.com/。還有python中的twisted框架也可以實(shí)現(xiàn)較簡(jiǎn)單的服務(wù)器。
以上說(shuō)的服務(wù)器都是指可以多人實(shí)時(shí)大部分都支持socket,fms除外
posted on 2010-11-12 10:32 gembin 閱讀(1674) 評(píng)論(0) 編輯 收藏 所屬分類: Flash 、ActionScript3