最近见很多人问道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就可以跑起来了。下次为大家解析登陆流程。