Smartfoxserver 2x官方提供的文档:
http://docs2x.smartfoxserver.com/
smartfoxserver pro admin tool 使用端口9339
smartfoxserver 2x admin tool 使用端口9933
以下的内容有些是适用与smartfoxserver pro, 有些适用于smartfoxserver 2x。这2个有很大的区别,几乎整个框架的都颠覆了,所以你要是从pro的代码直接切换的2x的版本,工作量太大了。
1. 在写服务器扩展的时候必须要重载的几个方法是(适用于smartfoxserver pro);
public void init()
public void destroy()
public void handleRequest(String cmd, String params[], User u, int fromRoom)
public void handleRequest(String arg0, ActionscriptObject arg1, User arg2,int arg3)
public void handleInternalEvent(InternalEventObject arg0)
2. 客户端提交的request是在handRequest()中处理(适用于smartfoxserver pro);
上面有2个handleRequest,到底是调用哪个?是根据你客户端的用哪个方法发送request,比如说,我们客户端(unity 3d + c#)用SendXtMessage发送,那么我们就调用的是:handleRequest(String cmd, String params[], User u, int fromRoom)。
内部事件是什么?就是服务器内容发送的事件,比较一个用户的login, logout等等。怎么样知道都有哪些事件呢?请参看我csdn的另外一篇blog。
3. 客户端怎么发送消息给服务器(适用于smartfoxserver pro):
c#)用SendXtMessage发送
4. 服务器怎么发送消息给客户端(适用于smartfoxserver pro):
public void sendResponse(java.lang.String[] params,
int fromRoom,
User sender,
java.util.LinkedList recipients)
5. 客户端怎么接收服务器发送过来的消息(适用于smartfoxserver pro):
SFSEvent.onExtensionResponse += OnExtensionResponse;
void OnExtensionResponse(object data, string type)
{
// We only use XML based messages in this tutorial, so ignore string and json types
if ( type == SmartFoxClient.XTMSG_TYPE_XML )
{
// For XML based communication the data object is a SFSObject
SFSObject dataObject = (SFSObject)data;
switch ( dataObject.GetString(“_cmd”) )
{
case “Start”:
break;
default:
break;
}
}
}
6. 扩展类不要写自己的构造函数(适用与smartfoxserver 2x)
2x中处理服务器内部和client的请求(request)全部是以类的方式组织。比如说你要处理client的request,你就可以在SFSExtension的子类(你自己实现)的init方法中:
addRequestHandler( “Request”, ClientRequestHandler.class );
关于其中的2个参数名字随便写。
你自己创建一个上面的第二个参数名字的类,这个例子里也就是ClientRequestHandler。
这样当收到client的request并且cmd参数是Request时,就会调用你ClientRequestHanlder的方法。
但是我这里重点要说的是,不要自己去定义他的构造函数,即使空的构造函数,否则调用你的类时(确切的说是创建你的类时)就抛出异常:
IllegalAccessException
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.