博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js通过as完成socket通信
阅读量:4323 次
发布时间:2019-06-06

本文共 3492 字,大约阅读时间需要 11 分钟。

[ as ] :

===================================================

 

import flash.external.ExternalInterface;

import flash.net.Socket;

import flash.events.SecurityErrorEvent;

import flash.events.IOErrorEvent;

import flash.events.ProgressEvent;

 

var mySocket:Socket = new Socket();

 

mySocket.addEventListener(Event.CONNECT,connectHandler);

mySocket.addEventListener(Event.CLOSE,closeHandler);

mySocket.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);

mySocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,seurityErrorHandler);

mySocket.addEventListener(ProgressEvent.SOCKET_DATA,socketDataHandler);

 

function connectHandler(e:Event):void{

    ExternalInterface.call("flashEvent.connectHandler");

}

 

function closeHandler(e:Event):void{

    ExternalInterface.call("flashEvent.closeHandler");             

}

 

function ioErrorHandler(evt:IOErrorEvent):void{

       ExternalInterface.call("flashEvent.ioErrorHandler");

}

            

function seurityErrorHandler(evt:SecurityErrorEvent):void{

ExternalInterface.call("flashEvent.seurityErrorHandler");

}

 

function socketDataHandler(evt:ProgressEvent):void{

var msg:String = "";

while(mySocket.bytesAvailable)

    {

          msg += mySocket.readMultiByte(mySocket.bytesAvailable,"utf-8");

    }

ExternalInterface.call("flashEvent.socketDataHandler",msg);

}

 

function sendData(str:String):void{

mySocket.writeUTFBytes(str);  

    mySocket.flush();

}

 

function connectSocket(host:String,port:String):void{

mySocket.connect(host,int(port));

}

 

function closeSocket(str:String):void{

mySocket.close();  

}

 

ExternalInterface.addCallback("sendDataFromAs", sendData);

ExternalInterface.addCallback("closeSocketFromAs", closeSocket);

ExternalInterface.addCallback("connectSocketFromAs", connectSocket);

ExternalInterface.call("flashEvent.asReady");

 

 

[ js ] :

==================================================================

var flashSocketNode = Y.Node.create('<embed src="flash/flash_socket.swf" width="1" height="1" allowScriptAccess="sameDomain" type="application/x-shockwave-flash">').appendTo(document.body),

   flashSocketNode = Y.Node.getDOMNode(flashSocketNode),

   asReady = false,

   that = this;

this._flashSocket = {

isAsReady : function(){

return asReady;

},

connect : function(host,port){

flashSocketNode.connectSocketFromAs(host,port);

},

close : function(){

flashSocketNode.closeSocketFromAs();

},

send : function(data){

flashSocketNode.sendDataFromAs(data);

},

onopen : function(){},

onclose : function(){},

onmessage : function(){}

}

window.flashEvent = {

asReady : function(){

asReady = true;

},

connectHandler : function(){

that._flashSocket.onopen();

},

closeHandler : function(){

that._FlashSocket.onclose();

},

ioErrorHandler : function(){

new Y.Win().alert({"content":"flash io error"});

},

seurityErrorHandler : function(){

new Y.Win().alert({"content":"flash seurity error"});

},

socketDataHandler : function(data){

dataList = data.slice(0,-2).split("\r\n");

Y.each(dataList,function(_data){

that._flashSocket.onmessage({data:_data});

if(dataList.length>1){

new Y.Win().alert({content:_data,width:1000,height:500});

}

},that);

}

};

[ server ] : 

============================================================

    def __handshakeHandler(self,data):

        response = ""

        if "<policy-file-request" in data :

            response = '''

<?xml version="1.0"?>

<cross-domain-policy>

<allow-access-from domain="*" to-ports="*" />

</cross-domain-policy>\0'''.lstrip()

    def __wrapResponse(self,str):

        response = ""

        if self.__getDraftType() == "common":

            response = '%s\r\n' % str

转载于:https://www.cnblogs.com/cly84920/archive/2012/01/12/4426556.html

你可能感兴趣的文章
十一:Java之GUI图形Awt和Swing
查看>>
.net在arraylist用法
查看>>
android程序报错“error launching activity com.android.ddmlib.shellcommandunresponsiveexception”的解决方式...
查看>>
ORACLE中CONSTRAINT的四对属性
查看>>
DbVisualizer Pro 9.5.2中文乱码问题
查看>>
numpy.tile()
查看>>
[bzoj3944] Sum
查看>>
hadoop2.7节点的动态增加与删除
查看>>
Ogre: 天空
查看>>
关于NSDictionary的一点感悟
查看>>
CSS长度单位:px和pt的区别
查看>>
50.分治算法练习: 二分算法: 2703 奶牛代理商 XII
查看>>
Wampserver 403问题
查看>>
mysql日志详细解析
查看>>
解决关闭app权限弹框后无法识别页面对象问题
查看>>
struts2_对Map进行双层迭代
查看>>
asp.net是什么?asp.net、vb.net和c#.net有什么区别?
查看>>
PhotoView
查看>>
hdu 1735(贪心) 统计字数
查看>>
iOS 系统框架结构图
查看>>