(一)Hello,World!
第一个关于ElectroServer的程序是喜闻乐见的Hello,World!
最终效果图:
第一步:导入
import com.electrotank.electroserver4.ElectroServer; import com.electrotank.electroserver4.entities.Protocol; import com.electrotank.electroserver4.message.event.ConnectionEvent; import com.electrotank.electroserver4.message.event.PrivateMessageEvent; import com.electrotank.electroserver4.message.MessageType; import com.electrotank.electroserver4.message.request.LoginRequest; import com.electrotank.electroserver4.message.request.PrivateMessageRequest; import com.electrotank.electroserver4.message.response.LoginResponse; import flash.display.Sprite; import flash.events.DataEvent; import flash.events.Event; import flash.text.TextField;
第二步:初始化
这里先创建ElectroServer实例,然后监听3个事件,分别是连接、登陆和私信。这里需要注意addEventListener函数不是我们熟悉的写法,而是ElectroServer实例的特殊方法,第二个参数为函数名字符串而不是函数名,第三个参数也是必须的,指定作用域。
然后设置协议,这里是二进制。
创建新的连接,第一个参数为ip地址字符串,第二个参数为端口。
最后创建TextField记录各步骤行为。
es = new ElectroServer(); es.addEventListener(MessageType.ConnectionEvent, "onConnectionEvent", this); es.addEventListener(MessageType.LoginResponse, "onLogin",this); es.addEventListener(MessageType.PrivateMessageEvent, "onPrivateMessageEvent", this); es.setProtocol(Protocol.BINARY); es.createConnection("127.0.0.1", 9899); createTextField();
第三步:处理连接响应
如果连接成功则新建登录请求,设置该请求用户名,然后送之。这里需要特别注意函数修饰符为public,不能为private否则报错。其他几个处理函数相同。
public function onConnectionEvent(e:ConnectionEvent):void { if (e.getAccepted()) { log("成功连接服务器!"); //build the request var lr:LoginRequest = new LoginRequest(); lr.setUserName("coolman" + Math.round(10000 * Math.random())); //send it es.send(lr); log("发送登陆请求."); } else { log("Connection failed. Reason: " + e.getEsError().getDescription()); } }
第四步:处理登陆请求响应
如果登陆成功,则发送给服务器一条私信,目标是自己,设置内容后发送之。
public function onLogin(e:LoginResponse):void { if (e.getAccepted()) { log("您已经成功登陆!"); var pmr:PrivateMessageRequest = new PrivateMessageRequest(); pmr.setUserNames([e.getUserName()]); pmr.setMessage("Hello World!"); es.send(pmr); log("发送消息!"); } else { log("登陆失败!"); } }
第五步:处理接受信息响应
直接记录消息内容。
public function onPrivateMessageEvent(e:PrivateMessageEvent):void { log("来自 " + e.getUserName() + "的消息: " + e.getMessage());}
下面是log函数和createTextField函数:
private function log(description:String):void { tf.appendText(description+"\n"); } private function createTextField():void { tf = new TextField(); tf.width = 780; tf.height = 580; tf.x = tf.y = 10; tf.border = true; addChild(tf); }
原代码如下: