SmartFoxServer简介(一)

        最近见很多人问道SmartFoxServer的问题,看大家很抓狂,网上的文章也很零碎。索性抛砖引玉,共同求进步吧。

        先简单介绍下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代表你写的扩展主程序入口,一些重要的事件需要在此声明。我们先看下这个扩展主类都需要些什么吧。


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(){
    	
    }
}


        sfs扩展很强,它允许你进行房间扩展。


public class MyRoomExtension extends SFSExtension {
    @Override
    public void init() {
    }

    @Override
    public void destroy() {
        super.destroy();
    }
 }

         该扩展需要你在CreateRoomSettings createRoomSettings = new CreateRoomSettings();这个类进行设置。createRoomSettings.setExtension(new RoomExtensionSettings("xxxExt", 你的扩展全类名));

        好了,这样至少你的第一个smartfoxserver就可以跑起来了。下次为大家解析登陆流程。

你可能感兴趣的:(socket,smartfoxserver)