准备工具有:SmartFoxServerPro1.6.6,Eclipse 3.5,Adobe 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)//向服务器发送请求。
*/importit.gotoandplay.smartfoxserver.*
stop()
varip:String ="127.0.0.1"
varport:Number = 9339
varzone:String ="simpleChat"
vars:SmartFoxClient =newSmartFoxClient(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)
{
varinfo:Object =newObject()
info.a ="abc"
info.b ="cba"
// helloworld决定调用哪个扩展,对应的是config.xml配置中中的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.x是Server/目录下的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/目录下,我们去找一个 name=” simpleChat”。我们在中加入:。
将eclipse编译的HelloWorld.class复制到Server/javaExtensions/目录下,注意在javaExtensions目录下还要创建自己创建HelloWorld.java时的路径。
最后来试试看吧!
先启动你的服务器,然后输入网址:后点击Browse Examples在选择Simple Connect。在启动后的dos界面里看看输出结果吧。