经过几个项目的应用,确实达到了优化框架的作用,可以单独作为一个socket 框架应用到 用到socket 通讯的项目,比如webgame;
此框架共有4个类:ClientSocket,IClientSocket,IClientSocketHandler,SocketState
ClientSocket: 客户端核心socket 类,在这个类中添加了客户端各个module 的回调函数,整个application 只需有一个ClientSocket 对象就可实现信息交互的畅通;
IClientSocket: 一个接口,定义了ClientSocket 所需的一些function;
IClientSocketHandler: 一个接口,由客户端各个module实现,作为回调对象;
SocketState :Socket 连接的一些常量;
以下是IClientSocket,IClientSocketHandler两个接口的定义
package com.socket.clientsocket
{
import flash.utils.ByteArray;
/**
*客户端网络接口
* @author liangxuhu
*
*/
public interface IClientSocket
{
/**
* 设置回调接口
* @param clientSocketHandler
* @return
*
*/
function setClientSocketCallBack(clientSocketHandler:IClientSocketHandler):Boolean;
/**
*获取回调接口
* @return
*
*/
function getClientSocketCallBack():IClientSocketHandler
/**
*添加回调接口
* @param clientSocketHandler
* @return
*
*/
function addClientSocketHandler(clientSocketHandler:IClientSocketHandler):Boolean;
/**
*删除回调接口
* @param clientSocketHandler
* @return
*
*/
function removeClientSocketHandler(clientSocketHandler:IClientSocketHandler):Boolean;
/**
*删除所有回调接口
*
*/
function removeAllClientSocketHandler():void;
/**
*获取状态
* @return
*
*/
function get connectState():int;
/**
*设置数据加密密钥
* @param packetKey
*
*/
function set packetKey(packetKey:uint):void;
/**
*连接服务器
* @param serverIP
* @param port
* @return
*
*/
function connect(serverIP:String,port:int):Boolean;
/**
*发送函数
* @param mainCmdID
* @param subCmdID
* @return
*
*/
function sendCmd(mainCmdID:int,subCmdID:int):Boolean;
/**
*发送函数
* @param mainCmdID
* @param subCmdID
* @param data
* @param dataSize
* @return
*
*/
function sendData(data:ByteArray,dataSize:int):Boolean;
/**
*关闭连接
* @param notify
* @return
*
*/
function closeSocket(notify:Boolean):Boolean;
}
}
package com.socket.clientsocket
{
import flash.utils.ByteArray;
/**
* 客户端网络回调接口
* @author liangxuhu
*
*/
public interface IClientSocketHandler
{
/**
*网络连接消息
* @param errorCode
* @param errorDesc
* @param clientSocket
* @return
*
*/
function onSocketConnect(errorCode:int,errorDesc:String,clientSocket:IClientSocket):Boolean;
/**
*网络读取消息
* @param mainCmdID
* @param subCmdID
* @param buffer
* @param dataSize
* @param clientSocket
* @return
*
*/
function onSocketRead(mainCmdID:uint,subCmdID:uint,buffer:ByteArray,dataSize:int,clientSocket:IClientSocket):Boolean;
/**
*网络关闭消息
* @param clientSocket
* @param closeByServer
* @return
*
*/
function onSocketClose(clientSocket:IClientSocket,closeByServer:Boolean):Boolean;
}
}