最近見不少人問道SmartFoxServer的問題,看你們很抓狂,網上的文章也很零碎。索性拋磚引玉,共同求進步吧。 java
先簡單介紹下SmartFoxServer吧,一個很是優秀的跨平臺socket服務器,內有不少遊戲開發用到的數據結構和支撐性功能。多用於遊戲、在線聊天室方面的應用。支持多種客戶端和服務器語言。分爲免費和收費版本。免費版本有100人限制。 服務器
總體上它有3個比較核心的概念。zone、room、user。房間依賴於zone、用戶依賴於房間。zone須要在它的配置文件進行生命。擴展配置以下: 數據結構
<extension> <name>xxxExt</name> <type>JAVA</type> <file>com.xxx.xxx</file> <propertiesFile></propertiesFile> <reloadMode>NONE</reloadMode> </extension>
xxxExt你起的擴展名稱,未來寫好的程序要打包到 /extensions/xxxExt 下,sfs會自動加載裏邊的jar包。type表明你用什麼語言進行服務器端擴展,file表明你寫的擴展主程序入口,一些重要的事件須要在此聲明。咱們先看下這個擴展主類都須要些什麼吧。 socket
public class xxxExtensionMain extends SFSExtension { @Override public void init() { initEventHandlers(); } public void destroy(){ super.destroy(); } // 綁定sfs系統事件 private void initEventHandlers() { //註冊登陸事件 this.addEventHandler(SFSEventType.USER_LOGIN, LoginEventHandler.class); //註冊加入zone事件 this.addEventHandler(SFSEventType.USER_JOIN_ZONE, JoinZoneEventHandler.class); //註冊加入房間事件 this.addEventHandler(SFSEventType.USER_JOIN_ROOM, JoinRoomEventHandler.class); //註冊離開房間事件 this.addEventHandler(SFSEventType.USER_LEAVE_ROOM, LeaveRoomEventHandler.class); //註冊斷開鏈接事件 this.addEventHandler(SFSEventType.USER_DISCONNECT, LeaveRoomEventHandler.class); } // 初始化過濾器 private void initFilters(){ } }
public class MyRoomExtension extends SFSExtension { @Override public void init() { } @Override public void destroy() { super.destroy(); } }
該擴展須要你在CreateRoomSettings createRoomSettings = new CreateRoomSettings();這個類進行設置。createRoomSettings.setExtension(new RoomExtensionSettings("xxxExt", 你的擴展全類名)); ide
好了,這樣至少你的第一個smartfoxserver就能夠跑起來了。下次爲你們解析登錄流程。 this