ajax java消息推送_在 Ajax 应用程序中实现实时数据推送

使用 Adobe Flex 打开客户端套接字

清单 4 中的代码展示了如何通过 Flex 打开客户端套接字:

清单 4. 通过 Flex 打开客户端

var socket : XMLSocket = new XMLSocket();

// register events:

socket.addEventListener(Event.CLOSE, closehandler);

socket.addEventListener(Event.CONNECT, connectHandler);

socket.addEventListener(Event.OPEN, openHandler);

socket.addEventListener(ProgressEvent.SOCKET_DATA, readHandler);

socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

socket.connect("localhost",20340);

完成 socket.connect() 调用后,Flex 将向服务器发送一条请求,要求提供策略文件,期待获得 XML 响应。完成之后,连接即建立,这个套接字现在即可用于从服务器推送数据。

作为拼图的最后一块,您将看到 Flex 如何将 Ajax 作为应用程序调用。为此,要编写一个可处理服务器端消息的通用 JavaScript 函数。我们将此方法命名为 handleServerMessageReceived(message)。此方法会获取来自服务器的 XML 代码,此方法对于消息的处理方式以应用程序为依据。清单 5 中的代码展示了 Flex 如何调用 JavaScript 函数。这是 readHandler 方法的代码,该方法在接收到服务器 XML 消息时被调用。

清单 5. 使用 handleServerMessageReceived(message) 的 readhHandler 代码

public  function readHandler(e :  DataEvent) : void {

var message   : XML = e.data as XML;

ExternalInterface.call("handleServerMessageReceived", message);

}

就是这样!就是这样简单。您已经创建了一个 XML 套接字连接。当来自服务器的数据送达时,您可调用 Ajax 中的某些通用处理函数,处理这些消息。完整源代码可供下载(请参见 下载 部分)。

下面来看看 OpenLaszlo 如何实现相同的目标。

使用 OpenLaszlo 打开客户端套接字

由于 OpenLaszlo 应用程序以 Flash 和 DHTML 平台为目标,因而其 API 和脚本语言类似于 Flash 和 JavaScript。这主要是为希望迁移到 OpenLaszlo(作为 RIA 的替代方案)的 Web 开发人员提供便利。

OpenLaszlo 提供了两种创建与后端之间的持久连接的方法。一种方法要使用 Lz(Laszlo 的缩写)标准库中提供的 ConnectionManager API。但其文档明确说明了以下内容:

“警告:这项特性是临时的。此特性用于容量有限的环境,能够用于开发,但我们不推荐使用此特性进行部署(不包括低容量、非任务关键型的部署)。若对使用此版本的持久连接的应用程序的健壮性有任何问题,请直接咨询 Laszlo Systems。”

或许目前这是一项实验技术,但在未来的 OpenLaszlo 版本中,它将得到证实。

第二种方法与 Flex 相似,您要手动打开 XML 套接字连接,等待 READ_DATA 事件发生。清单 6 展示了实现方法。

清单 6. 定义 XMLSocket 类

// connect the socket here:

xml_socket.connect(host,port);

ExternalInterface.call(‘handleServerMessageReceived',messageXML);

]]>

(为简短起见,忽略了其他处理方法。在本文的 下载 部分中可获得完整的代码清单。)

就是这样,创建一个套接字对象并连接此对象就是这样轻松。这一代码清单创建了一个名为 ClientSocket 的新类,随后声明了一个名为 “xml_socket” 的 XML 套接字对象。只要此套接字对象读取到来自服务器的数据,就会触发 onData 事件,该事件将由为 onData 定义的处理方法处理。最后,在 onData 处理方法中,调用 Ajax 应用程序中的外部 JavaScript 函数。此后的流程与 Flex 客户端相同。

要创建 ClientSocket 对象,只需声明它即可:

清单 7. 声明 ClientSocket

为 ClientSocket 触发了 init 事件时,将尝试连接指定主机和端口的后端。(请参见清单 6 中的 oninit 处理方法。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值