flex通过socket json与后台通讯
来源:互联网 发布:windows api窗口函数 编辑:程序博客网 时间:2024/05/24 01:46
package com.superstar2.portal.model.logic
{
import com.adobe.serialization.json.JSON; //json序列号包
import com.superstar2.portal.common.hashMap.HashMap;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.net.Socket;
import flash.utils.ByteArray;
import mx.controls.Alert;
public class ShowerRoomSocket extends EventDispatcher
{
private static var _instence:ShowerRoomSocket;
private var socket:Socket;
public static var hashMap:HashMap;
public function ShowerRoomSocket(c:C, target:IEventDispatcher=null)
{
super(target);
socket=new Socket();
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(Event.CLOSE, onServerClose); //只有服务器关闭链接时 才分派此事件
socket.addEventListener(IOErrorEvent.IO_ERROR, onIo_Error); //在指定了主机但出现输入/输出错误并由此导致连接失败时分派。
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData); //在指定了主机但出现输入/输出错误并由此导致连接失败时分派。(
hashMap=new HashMap();
}
public static function getInstence():ShowerRoomSocket
{
if (_instence == null)
{
_instence=new ShowerRoomSocket(new C);
}
return _instence;
}
/**链接服务器*/
public function connect(address:String, port:int):void
{
try
{
socket.connect(address, port);
}
catch (err:Error)
{
Alert.show(err.message);
}
}
/**链接服务器成功*/
private function onConnect(event:Event):void
{
// Alert.show("链接服务器成功");
}
/**服务器端socket关闭*/
private function onServerClose(event:Event):void
{
// Alert.show("服务器链接关闭 链接断开");
}
/**输入输出错误*/
private function onIo_Error(event:IOErrorEvent):void
{
// Alert.show("输入输出错误");
}
/**发送数据*/
public function send(obj:Object,index:int, callBackFunc:Function=null):void
{
//存储回调函数
if (callBackFunc != null)
{
hashMap.put(index, callBackFunc);
}
var str:String=JSON.encode(obj);
var bArray:ByteArray=new ByteArray();
bArray.writeMultiByte(str, "UTF-8");
var beArray:ByteArray=new ByteArray();
beArray.writeBytes(bArray);
socket.writeBytes(beArray);
socket.flush();
}
/**接收数据*/
private function onSocketData(event:ProgressEvent):void
{
if (socket.bytesAvailable)
{
var str:String=socket.readMultiByte(socket.bytesAvailable, "UTF-8");
str=str.replace(/\s/g, '');
var obj:Object=JSON.decode(str);
trace("数据:" + str);
var callBackFunc:Function=hashMap.getValue(obj.Chat_Type) as Function;
if(callBackFunc!=null)
{
callBackFunc(obj);
}
}
}
}
}
class C
{
}
{
import com.adobe.serialization.json.JSON; //json序列号包
import com.superstar2.portal.common.hashMap.HashMap;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.net.Socket;
import flash.utils.ByteArray;
import mx.controls.Alert;
public class ShowerRoomSocket extends EventDispatcher
{
private static var _instence:ShowerRoomSocket;
private var socket:Socket;
public static var hashMap:HashMap;
public function ShowerRoomSocket(c:C, target:IEventDispatcher=null)
{
super(target);
socket=new Socket();
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(Event.CLOSE, onServerClose); //只有服务器关闭链接时 才分派此事件
socket.addEventListener(IOErrorEvent.IO_ERROR, onIo_Error); //在指定了主机但出现输入/输出错误并由此导致连接失败时分派。
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData); //在指定了主机但出现输入/输出错误并由此导致连接失败时分派。(
hashMap=new HashMap();
}
public static function getInstence():ShowerRoomSocket
{
if (_instence == null)
{
_instence=new ShowerRoomSocket(new C);
}
return _instence;
}
/**链接服务器*/
public function connect(address:String, port:int):void
{
try
{
socket.connect(address, port);
}
catch (err:Error)
{
Alert.show(err.message);
}
}
/**链接服务器成功*/
private function onConnect(event:Event):void
{
// Alert.show("链接服务器成功");
}
/**服务器端socket关闭*/
private function onServerClose(event:Event):void
{
// Alert.show("服务器链接关闭 链接断开");
}
/**输入输出错误*/
private function onIo_Error(event:IOErrorEvent):void
{
// Alert.show("输入输出错误");
}
/**发送数据*/
public function send(obj:Object,index:int, callBackFunc:Function=null):void
{
//存储回调函数
if (callBackFunc != null)
{
hashMap.put(index, callBackFunc);
}
var str:String=JSON.encode(obj);
var bArray:ByteArray=new ByteArray();
bArray.writeMultiByte(str, "UTF-8");
var beArray:ByteArray=new ByteArray();
beArray.writeBytes(bArray);
socket.writeBytes(beArray);
socket.flush();
}
/**接收数据*/
private function onSocketData(event:ProgressEvent):void
{
if (socket.bytesAvailable)
{
var str:String=socket.readMultiByte(socket.bytesAvailable, "UTF-8");
str=str.replace(/\s/g, '');
var obj:Object=JSON.decode(str);
trace("数据:" + str);
var callBackFunc:Function=hashMap.getValue(obj.Chat_Type) as Function;
if(callBackFunc!=null)
{
callBackFunc(obj);
}
}
}
}
}
class C
{
}
- flex通过socket json与后台通讯
- 通过JSON与服务器通讯
- Flex 与Python之间Socket通讯
- Liferay与Flex通过HTTPService通讯
- VC与linux通过socket通讯
- golang通过socket与java通讯
- Flex通过request与后台进行通信
- flex通过BlazeDS与java后台通信
- flex与twisted通过socket通信
- Flex Socket 与 C++ 通讯 --- 安全沙箱问题解决
- Flex Socket 与 C++ 通讯 --- 安全沙箱问题解决
- Flex Socket 与 C++ 通讯 --- 安全沙箱问题解决 (转)
- Flex Socket 与 C++ 通讯 --- 安全沙箱问题解决
- ExtJs如何通过JSON与后台通信
- flash socket与后台通讯遇到的问题
- Flex与ASP.NET通过Remoting方式进行通讯
- Flex与Java通过blazeds.war实现通讯
- flash/flex socket通讯实例
- 不上街不等于不花钱——我的电子商务观察
- 在 ASP.NET 中执行 URL 重写
- printf的格式输出
- Linux防ARP攻击和嗅探
- 用表驱动代替switch-case
- flex通过socket json与后台通讯
- 如何将USBKey中的证书注册到Windows系统中
- DELPHI内存详解(6)-函数返回值
- asp+.net 传智播客.Net培训免费网络直播课堂
- DELPHI内存详解(5)-用const来提高应用程序在多核多线程下的性能
- 单下划线和双下划线前缀
- DELPHI内存详解(4)-变量初始化
- DELPHI内存详解(3)-DELPHI的内存实现
- .net 教程下載