在 Ajax 应用程序中实现实时数据推送:学习使用基于套接字的 RIA 技术
2009-11-14 00:00:00 来源:WEB开发网您可为应用程序实现最大程度的实时服务器推送行为(不考虑网络延时等外部因素),您将获得高度可伸缩的解决方案(以同时连接的客户端数量为准)。
下面我们将开始探索如何解决上述的第三个和第四个问题。
基于套接字的 RIA 技术
Ajax 并不能真正地解决第三个和第四个问题。因而,您需要利用其他 RIA 技术寻求解决方案。有两种 RIA 技术提供的套接字 API 可与 Ajax 应用程序交互。这两种技术是 Adobe Flex 和 OpenLaszlo。全面介绍这两种技术并非本文讨论范围之内,但这些技术提供的两种特性如下所示:
均能通过后端打开 TCP 二进制套接字
均能出色地与运行在同一个浏览器窗口中的 Ajax 应用程序(主要是 JavaScript)交互
但这仅仅解决了部分问题。您确实可以打开套接字,可以使 Ajax 应用程序使用它们,但 Ajax 应用程序仍然无法处理纯二进制数据。这又该怎么办?实际上,这两种技术都提供了二进制 TCP 套接字的一种变体,称为 XMLSocket,它可用于来回传输纯 XML 数据。这正是您需要的东西。如果这些技术能够通过服务器打开套接字,如果它们能够传输 XML 数据,我们的任务就完成了。Ajax 应用程序可充分利用这一点,模拟实时服务器推送技术。下面将介绍如何实现。
实现 Ajax 服务器推送
我将使用两种工具解释这项技术:Adobe Flex 和 OpenLaszlo。首先,您需要编写能够接收并缓存连接的后端服务器。在这里不能太过偏离主题,因而要保证服务器基于阻塞 I/O。
您需要创建一个服务器套接字,接收预先指定地址的连接:
清单 1. 创建服务器套接字public class SimpleServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("localhost",20340));
Socket socket = serverSocket.accept();
}
}
更多精彩
赞助商链接