XMLSocket 类实现了客户端套接字,这使得运行 Flash Player 的计算机可以与由 IP 地址或域名标识的服务器计算机进行通信。 对于要求滞后时间较短的客户端/服务器应用程序,如实时聊天系统,XMLSocket 类非常有用。 传统的基于 HTTP 的聊天解决方案频繁轮询服务器,并使用 HTTP 请求来下载新的消息。 与此相对照,XMLSocket 聊天解决方案保持与服务器的开放连接,这一连接允许服务器即时发送传入的消息,而无需客户端发出请求。 若要使用 XMLSocket 类,服务器计算机必须运行可识别 XMLSocket 类使用的协议的守护程序。 下面的列表说明了该协议:
XML 消息通过全双工 TCP/IP 流套接字连接发送。每个 XML 消息都是一个完整的 XML 文档,以一个零 (0) 字节结束。通过 XMLSocket 连接发送和接收的 XML 消息的数量没有限制。XMLSocket.connect() 方法只能连接到端口号大于等于 1024 的 TCP 端口。 这种限制的一个后果是,向与 XMLSocket 对象通信的服务器守护程序分配的端口号也必须大于等于 1024。 端口号小于 1024 的端口通常用于系统服务(如 FTP、Telnet 和 HTTP),因此,出于安全方面的考虑,禁止 XMLSocket 对象使用这些端口。 这种端口号方面的限制可以减少不恰当地访问和滥用这些资源的可能性。将服务器设置为与 XMLSocket 对象进行通信可能会遇到一些困难。 如果您的应用程序不需要进行实时交互,请使用 URLLoader 类,而不要使用 XMLSocket 类。 若要使用 XMLSocket 类的方法,您必须先使用构造函数 new XMLSocket 创建一个 XMLSocket 对象。
使用此类时,请考虑 Flash Player 安全模型:
如果执行调用的 SWF 文件在只能与本地文件系统内容交互的沙箱中,而目标资源来自网络沙箱,则不允许发送或接收数据。
如果执行调用的 SWF 文件来自网络沙箱而目标资源在本地,也不允许发送或接收数据。进行调用的 SWF 文件和被访问的网络资源必须在同一个域里。 例如,位于 的 SWF 文件只能向同样位于 的源发送(或从中接收)数据。网站可通过跨域策略文件允许对资源进行跨域访问。