WEB开发网
开发学院软件开发Java 在 Ajax 应用程序中实现实时数据推送:学习使用基... 阅读

在 Ajax 应用程序中实现实时数据推送:学习使用基于套接字的 RIA 技术

 2009-11-14 00:00:00 来源:WEB开发网   
核心提示: 在这里,我将服务器套接字绑定到 localhost:20340 这一地址,在 Ajax 应用程序中实现实时数据推送:学习使用基于套接字的 RIA 技术(6),当一个客户端连接到该服务器套接字时,它将为我提供一个套接字,在响应中,您需要返回此策略文件,显示连接,Flex 客户端随后会要求策略文件

在这里,我将服务器套接字绑定到 localhost:20340 这一地址。当一个客户端连接到该服务器套接字时,它将为我提供一个套接字,显示连接。Flex 客户端随后会要求策略文件,这是其安全性模型的一部分。通常,这个策略文件的形式类似于清单 2。


清单 2. Flex 客户端策略文件
<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM 
  "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
<allow-access-from domain="*" to-ports="20340"/> 
</cross-domain-policy>     

就在连接之后,Flex 客户端会立即发送一条策略文件的请求。该请求仅包含一个 XML 标记:<policy-file-request/>。在响应中,您需要返回此策略文件。清单 3 中的代码就完成了这个任务。


清单 3. 发送策略文件响应
public static void main(String[] args) throws IOException { 
  ServerSocket serverSocket = new ServerSocket(); 
  serverSocket.bind(new InetSocketAddress("localhost", 20340)); 
  Socket socket = serverSocket.accept(); 
  String POLICY_REQUEST = "<policy-file-request/>\u0000"; 
  String POLICY_FILE = "<?xml version=\"1.0\"?>\n" + 
   "<!DOCTYPE cross-domain-policy SYSTEM 
     \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">\n" + 
   "<cross-domain-policy> \n" + 
   " <allow-access-from domain=\"*\" to-ports=\"20340\"/> \n" + 
   "</cross-domain-policy>"; 
  byte[] b = new byte[POLICY_REQUEST.length()]; 
  DataInputStream dataInputStream = new DataInputStream(socket.getInputStream()); 
  dataInputStream.readFully(b); 
  String request = new String(b); 
  if (POLICY_REQUEST.equals(request)) { 
    DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
    dataOutputStream.write(POLICY_FILE.getBytes()); 
    dataOutputStream.flush(); 
    dataOutputStream.close(); 
  } else throw new IllegalArgumentException("unknown request format " + request); 
 }     

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Ajax 应用程序 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接