现在的位置: 首页 > 综合 > 正文

SmartFoxServer Java扩展 例子

2013年09月13日 ⁄ 综合 ⁄ 共 3113字 ⁄ 字号 评论关闭

准备工具有:SmartFoxServerPro1.6.6Eclipse 3.5Adobe Flash CS4.

 

在写第一个Java扩展之前,你要确定自己的SmartFoxServer已经能正常工作。并且下面所说的所有路径都是从安装SmartFoxServer目录开始的。

 

大致有三步:

1. 修改SFS自带的Flash文件,让它为我们向Java扩展发送请求;

2. 自己写一个Java扩展,用来处理Flash的请求;

3. 配置SFS服务器,让Flash的请求能找到我们的Java扩展。

 

第一步Flash修改:

我们将导入Server/webserver/webapps/root/Examples/AS2/01_simpleConnect下的simpleConnect.fla例子。

首先在“属性”下的“配置文件:Flash MX Settings”中点击“编辑”按钮,然后在“Flash”下的“脚本”列点击“设置”,最后点击“+”号添加Flash API/Actionscript 2.0 3.0两个文件夹。

接着我们开打动作面板,选中“Layer 1”后把里面的代码替换成:

 

/**

 * SFS客户端访问服务器端的四个步骤:

 *      1. smartfoxclient.connect(ip, port)                  // 连接服务器。

 *      2. smartfoxclient.login(zone, name)                  // 加入服务器中的Zone

 *      3. this.autoJoin()                               // 加入到Room中。

 *      4. smartfoxclient.sendXtMessage("", "", arguments)   // 向服务器发送请求。

 */ import it.gotoandplay.smartfoxserver.*

 

stop()

 

var ip:String     = "127.0.0.1"

var port:Number   = 9339

var zone:String   = "simpleChat"

 

var s:SmartFoxClient = new SmartFoxClient(true)

 

 

// 试图连接服务器。

s.connect(ip, port)

 

// connect()函数执行后被触发。

s.onConnection = function(status)

{

    if (status) {

       status_txt.text = "connection is successful."

       s.login(zone, "zhangchen")

    } else {

       status_txt.text = "Can't connect!"

    }

}

 

// 当进入一个zone时该事件被触发(通常是访问login()函数期间)。

s.onRoomListUpdate = function(roomList:Object) {

    this.autoJoin()

}

 

// 当一个房间成功地被加入时触发。

s.onJoinRoom = function(roomObj)

{

    var info:Object = new Object()

    info.a = "abc"

    info.b = "cba"

    // helloworld决定调用哪个扩展,对应的是config.xml配置中<extension />中的name参数。

    // cmd传递给handleRequest()方法中的第一个参数(String cmd)

    // info传递给handleRequest()方法中的第二个参数(ActionSrcriptObject aso)

    s.sendXtMessage("helloworld","cmd",info)

}

Java扩展步骤:

那现在我们就开始吧,给你的Java项目添加这几个类库:

SFS version 1.6.x Server/lib/目录下的jysfs.jar, json.jar, json-lib-2.1-jdk15.jar三个类库。

SFS version 1.5.x Server/lib/目录下的jysfs.jar, json.jar 两个类库。

SFS version 1.4.xServer/目录下的smartfoxserver.jar

 

让我们来写第一个Java扩展,需要做的就是让自己的类必须去继承AbstractExtension类,这是一个抽象类,需要实现未实现的方法,有:init(), destroy(), handleRequest(), handleInternalEvent()。我们目前所关心的就是handleRequest方法,它就是用来处理客户端的请求。

HelloWorld.java

package test;

 

import it.gotoandplay.smartfoxserver.data.User;

import it.gotoandplay.smartfoxserver.events.InternalEventObject;

import it.gotoandplay.smartfoxserver.extensions.AbstractExtension;

import it.gotoandplay.smartfoxserver.lib.ActionscriptObject;

 

public class HelloWorld extends AbstractExtension {

 

       @Override

       public void handleRequest(String cmd, ActionscriptObject aso, User user,

                     int arg3) {

              System.out.println(aso.getString("a"));  // 通过sendXtMessage()传递来的信息

              System.out.println(aso.getString("b"));

       }

 

       @Override

       public void handleRequest(String cmd, String[] arg1, User user, int arg3) {

              // 我们暂时不需要在这里做什么。

       }

 

       @Override

       public void handleInternalEvent(InternalEventObject arg0) {

              // 我们暂时不需要在这里做什么。

       }

 

}


配置SFS服务器:

       配置文件在Server/目录下,我们去找一个<Zone /> name=” simpleChat”。我们在<Extensions />中加入:<extension name="helloworld" className="test.HelloWorld" type="java" />

eclipse编译的HelloWorld.class复制到Server/javaExtensions/目录下,注意在javaExtensions目录下还要创建自己创建HelloWorld.java时的路径。

 

 

最后来试试看吧!

先启动你的服务器,然后输入网址:http://127.0.0.1:8080 后点击Browse Examples 在选择Simple Connect。在启动后的dos界面里看看输出结果吧。

抱歉!评论已关闭.