利用Flash XMLSocket实现”服务器推”技术

简介: 利用Flash XML Socket实现”服务器推”技术的基础是:1.Flash提供了XMLSocket类,服务器利用Socket向Flash发送数据;2.JavaScript和Flash的紧密结合,JavaScript和as可以相互调用。

     利用Flash XML Socket实现”服务器推”技术的基础是:1.Flash提供了XMLSocket类,服务器利用Socket向Flash发送数据;2.JavaScript和Flash的紧密结合,JavaScript和as可以相互调用。

     具体实现的方法:在HTML页面中陷入一个使用了XMLSocket类的Falsh程序。JavaScript通过调用此Flash程序提供的套接口接口与服务端的套接口进行通信。JavaScript在收到服务器端以XML格式传送的信息控制HTML的Dom对象改变页面的内容显示。

image

 

一、XMLSocket简介

      XMLSocket 类实现了客户端套接字,这使得运行 Flash Player 的计算机可以与由 IP 地址或域名标识的服务器计算机进行通信。 对于要求滞后时间较短的客户端/服务器应用程序,如实时聊天系统,XMLSocket 类非常有用。 传统的基于 HTTP 的聊天解决方案频繁轮询服务器,并使用 HTTP 请求来下载新的消息。 与此相对照,XMLSocket 聊天解决方案保持与服务器的开放连接,这一连接允许服务器即时发送传入的消息,而无需客户端发出请求。 若要使用 XMLSocket 类,服务器计算机必须运行可识别 XMLSocket 类使用的协议的守护程序。可以参考XMLSocket简介

二、AS与JavaScript通信

      利用ExternalInterface可以实现AS与JavaScript的通信,具体请看Flex与JavaScript交互

三、实现Socket

      客户端Flex:

 

 1:  <?xml version="1.0" encoding="utf-8"?>
 2:  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 3:      <mx:Script>
 4:          <![CDATA[
 5:              private var socket:XMLSocket=new XMLSocket();
 6:   
 7:              private function ConncetServer():void
 8:              {
 9:                  socket.addEventListener(DataEvent.DATA,OnReceived);
10:                  socket.addEventListener(Event.CONNECT , onConnected);
11:                  this.socket.connect("127.0.0.1",8080);
12:              }
13:   
14:              private function onConnected(event:Event):void
15:              {
16:                  socket.send("begin connect");
17:                  this.txtContent.text=this.txtContent.text+"conect success\n";
18:              }
19:   
20:              private function Send():void
21:              {
22:                  socket.send("message from flex");
23:              }
24:   
25:               private function OnReceived(event:DataEvent):void
26:               {    
27:                  trace("receive data.");
28:                  this.txtContent.text=this.txtContent.text+"\n"+ event.text;
29:               }
30:          ]]>
31:      </mx:Script>
32:      
33:      <mx:Button label="Connect" fontSize="12" id="btnConnect" left="10" top="20" click="ConncetServer()"/>
34:      <mx:Button label="Send" fontSize="12" id="btnSend" left="80" top="20" click="Send();" />
35:      <mx:TextArea borderColor="#010A10" id="txtContent" left="10" top="110" right="10" bottom="10" backgroundColor="#DEEEF3" cornerRadius="12"/>
36:  </mx:Application>

 

        Socket服务端:

  1:  using System;
  2:  using System.Collections.Generic;
  3:  using System.Linq;
  4:  using System.Text;
  5:  using System.Net;
  6:  using System.Net.Sockets;
  7:  using System.Threading;
  8:   
  9:  namespace SocketServer
 10:  {
 11:      class Program
 12:      {
 13:          static bool ServiceStartFlag = false;
 14:          static Socket socket;
 15:          static Thread thread;
 16:   
 17:          static void Main(string[] args)
 18:          {
 19:              socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 20:              IPHostEntry ieh = Dns.GetHostEntry("localhost");
 21:              IPAddress localServerIP = ieh.AddressList[1];
 22:              IPEndPoint localIPEndPoint = new IPEndPoint(localServerIP, 8080);
 23:   
 24:              socket.Bind(localIPEndPoint);
 25:              socket.Listen(600);
 26:   
 27:              thread = new Thread(new ThreadStart(AcceptClient));
 28:              thread.IsBackground = true;
 29:              thread.Start();
 30:   
 31:              Console.ReadLine();
 32:          }
 33:   
 34:          static void AcceptClient()
 35:          {
 36:              ServiceStartFlag = true;
 37:   
 38:              while (ServiceStartFlag)
 39:              {
 40:                  try
 41:                  {
 42:                      Socket newSocket = socket.Accept();
 43:                      string onemessge = "<cross-domain-policy><allow-access-from domain=\"" + "*" + "\" to-ports=\"8080\"/></cross-domain-policy>\0";
 44:   
 45:                      byte[] tmpBytes = Encoding.UTF8.GetBytes(onemessge);
 46:                      newSocket.Send(tmpBytes);
 47:   
 48:                      Thread newThread = new Thread(new ParameterizedThreadStart(ReadMsg));
 49:                      newThread.IsBackground = true;
 50:                      object obj = newSocket;
 51:                      newThread.Start(obj);
 52:                  }
 53:                  catch (SocketException ex)
 54:                  {
 55:   
 56:   
 57:   
 58:                  }
 59:              }
 60:          }
 61:   
 62:          static void ReadMsg(object obj)
 63:          {
 64:              Socket socket = (Socket)obj;
 65:   
 66:              byte[] byteMessage = null; ;
 67:   
 68:              while (ServiceStartFlag)
 69:              {
 70:                  try
 71:                  {
 72:                      if (socket.Connected)
 73:                      {
 74:   
 75:                          byteMessage = new byte[1000];
 76:                          int len = socket.Receive(byteMessage);
 77:                          if (len > 0)
 78:                          {
 79:                              string sTime = DateTime.Now.ToShortTimeString();
 80:   
 81:                              string msg = sTime + ":" + "Message from:";
 82:   
 83:                              msg += socket.RemoteEndPoint.ToString() + Encoding.UTF8.GetString(byteMessage);
 84:                              Console.WriteLine(msg);
 85:                              byteMessage = null;
 86:   
 87:                              byte[] tmpBytes = Encoding.UTF8.GetBytes("Sended Sucessed!\0");
 88:   
 89:                              socket.Send(tmpBytes);
 90:                          }
 91:   
 92:   
 93:                      }
 94:                  }
 95:                  catch (SocketException ex)
 96:                  {
 97:                      Console.WriteLine(ex.Message);
 98:                  }
 99:              }
100:          }
101:      }
102:  }
103:   
104:   

 

   运行结果:

image

image

目录
相关文章
|
Java 关系型数据库 API
探索后端技术:构建高效、可靠的服务器端应用
在当今数字化时代,后端技术是任何成功应用程序的基石。它涉及服务器、数据库和应用程序之间的交互,处理数据存储、业务逻辑和系统性能等关键任务。本文将深入探讨后端开发的核心概念、常见技术栈及其实际应用,帮助读者更好地理解和掌握构建高效、可靠后端系统的技巧与策略。
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
622 0
|
6月前
|
存储 机器学习/深度学习 人工智能
硅谷GPU单节点服务器:技术解析与应用全景
“硅谷GPU单节点服务器”代表了在单个物理机箱内集成强大计算能力,特别是GPU加速能力的高性能计算解决方案。它们并非指代某个特定品牌,而是一类为处理密集型工作负载而设计的服务器范式的统称。
|
11月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
1446 61
|
9月前
|
人工智能 运维 安全
MCP协议深度解析:客户端-服务器架构的技术创新
作为一名长期关注AI技术发展的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP协议作为Anthropic公司推出的开放标准,正在重新定义AI应用与外部系统的交互方式,其基于JSON-RPC 2.0的通信机制为构建可扩展、安全的AI应用提供了坚实的技术基础。在深入研究MCP协议规范的过程中,我发现这一协议不仅解决了传统AI应用在资源访问、工具调用和上下文管理方面的痛点,更通过其独特的三大核心概念——资源(Resources)、工具(Tools)、提示词(Prompts)——构建了一个完整的AI应用生态系统。MCP协议的客户端-
675 0
MCP协议深度解析:客户端-服务器架构的技术创新
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
349 22
|
12月前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
存储 机器学习/深度学习 人工智能
阿里云第八代云服务器c8i与g8i深度解析:技术对比、场景适配与选购指南
阿里云服务器计算型c8i与通用型g8i实例属于阿里云的第八代云服务器实例规格,是除了计算型c7与c8y和通用型g7与g8y之外同样深受用户喜欢的云服务器实例规格。本文将详细解析计算型c8i与通用型g8i实例的技术特性、适用场景、性能优势,以及最新的活动价格情况,并为用户提供购买建议。
|
12月前
|
存储 弹性计算 人工智能
阿里云服务器ECS g8i实例怎么样?新一代g8i实例技术特性与场景应用解析
阿里云服务器ECS g8i实例怎么样?对于很多企业用户说,云服务器的性能、安全性和AI能力是用户非常关注的。无论是处理大规模数据、运行复杂算法,还是保障业务应用的安全,都需要云服务器具备卓越的性能和强大的功能。阿里云推出的第八代云服务器ECS g8i实例,凭借其卓越的性能、增强的AI能力和全面的安全防护,成为了市场关注的焦点。本文将为大家解析ECS g8i实例的技术特性、产品优势、适用场景及与同类产品的对比,同时介绍其收费标准和活动价格,以供大家了解和选择。
阿里云服务器ECS g8i实例怎么样?新一代g8i实例技术特性与场景应用解析

热门文章

最新文章

下一篇
开通oss服务