Smartfoxserver点滴

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

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *