ActionScript 提供了一个内置的 XMLSocket 类,它允许您打开与服务器的持续连接。套接字连接使服务器在信息可用时就向客户端发布(或推送)信息。如果没有持续连接,服务器必须等待一个 HTTP 请求。这种打开的连接消除了反应时间问题,它通常用于实时的应用程序,比如聊天。数据以单个字符串的形式在套接字连接上发送,它应该是 XML 格式的。可以使用 XML 类来组织数据。
要创建套接字连接,必须创建服务器端应用程序来等待套接字连接请求,然后向 SWF 文件发送响应。这种类型的服务器端应用程序可用编程语言(例如 Java)来编写。
您可以使用 XMLSocket 类的 connect() 和 send() 方法通过套接字连接与服务器互相收发 XML。connect() 方法建立与 Web 服务器端口的套接字连接。send() 方法将 XML 对象传递给套接字连接中指定的服务器。
调用 connect() 方法时,Flash Player 打开与服务器的 TCP/IP 连接,并使该连接保持打开状态,直到发生以下任一事件:
- XMLSocket 类的
close() 方法被调用。
- 对 XMLSocket 对象的引用不再存在。
- Flash Player 退出。
- 连接中断(例如,调制解调器断开连接)。
下面的示例创建一个 XML 套接字连接,并从 XML 对象 myXML 发送数据。要理解此脚本,请阅读注释行(用字符 // 表示):
//创建 XMLSocket 对象
var theSocket:XMLSocket = new XMLSocket();
// 使用 connect() 方法连接到站点上大于 1024 的空闲端口。
//输入 localhost 或 127.0.0.1 进行本地测试。
//对现场服务器,输入您的域 www.yourdomain.com
theSocket.connect("localhost", 12345);
// 显示关于连接的文本
theSocket.onConnect = function(myStatus) {
if (myStatus) {
conn_txt.text = "connection successful";
} else {
conn_txt.text = "no connection made";
}
};
// 要发送的数据
function sendData() {
var myXML:XML = new XML();
var mySend = myXML.createElement("thenode");
mySend.attributes.myData = "someData";
myXML.appendChild(mySend);
theSocket.send(myXML);
}
// 按钮发送数据
sendButton.onRelease = function() {
sendData();
};
// 跟踪从套接字连接返回的数据
theSocket.onData = function(msg:String):Void {
trace(msg);
};